[英]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.