簡體   English   中英

如何使用Entity Framework Core加載相關實體

[英]How to load related entities with the Entity Framework Core

我正在探索Entity Framework Core並開始使用代碼第一種方法,同時閱讀本指南https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html ,不同的模型除外。

在EF6中,它有延遲加載,我能夠輕松地拉動相關實體,但它在EF Core中無效。 我想知道如何使這個工作或如果有一個工作來使它工作。

以下是我的兩個模型的示例:

public class Team
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Icon { get; set; }
    public string Mascot { get; set; }
    public string Conference { get; set; }
    public int NationalRank { get; set; }

    public List<Game> Games { get; set; }
}

public class Game
{
    public string Id { get; set; }
    public string Opponent { get; set; }
    public string OpponentLogo { get; set; }
    public string GameDate { get; set; }
    public string GameTime { get; set; }
    public string TvNetwork { get; set; }
    public string TeamId { get; set; }

    public Team Team { get; set; }
}

我想要為團隊獲得所有游戲但是現在它是空的。

我決定創建一個Web Api項目,所以我有一個名為TeamsController的控制器,當我向控制器發出GET請求時,我希望得到一個團隊列表,其中包含填充了相關游戲的游戲屬性。

這是我嘗試過的:

[HttpGet]
public async Task<List<Team>> Get()
{
    return await _context.Teams.Include(t => t.Games).ToListAsync();
}

這是JSON結果:

[
  {
    "id": "007b4f09-d4da-4040-be3a-8e45fc0a572b",
    "name": "New Mexico",
    "icon": "lobos.jpg",
    "mascot": "New Mexico Lobos",
    "conference": "MW - Mountain",
    "nationalRank": null,
    "games": [
      {
        "id": "1198e6b1-e8ab-48ab-a63f-e86421126361",
        "opponent": "vs Air Force*",
        "opponentLogo": "falcons.jpg",
        "gameDate": "Sat, Oct 15",
        "gameTime": "TBD ",
        "tvNetwork": null,
        "teamId": "007b4f09-d4da-4040-be3a-8e45fc0a572b"
      }
    ]
  }
]

當我這樣做:

[HttpGet]
public async Task<List<Team>> Get()
{
    return await _context.Teams.ToListAsync();
}

我得到了所有的團隊,但是Games屬性為null。

我希望它會返回數據庫中的所有團隊以及每個團隊的所有游戲。 我怎樣才能使這個工作?

延遲加載目前未在實體框架核心中實現,如此處所示 ,我建議您查看AutoMapper以在POCO中投影所需的結果。 因為你想要的只會導致n + 1問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM