我与实体框架的核心探索和利用,同时通过本指南https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html读取与不同型号的异常的代码第一种方式开始了。如何加载相关的实体与实体框架核心
在EF6它有延迟加载和我能够真正轻松地拉动相关实体,但它是在EF没有核心的工作。我想知道如何使这个工作,或者如果有工作来解决它的工作。
这里是什么样子我的模型的两个例子:
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; }
}
我想获得的所有游戏的一队,但截至目前为null。
我决定做一个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。
我希望它能够将数据库中的所有团队以及每个团队的所有游戏归还。我怎样才能得到这个工作?
根据[此](https://docs.efproject.net/en/latest/querying/related-data.html),迟缓装载尚未实现。 – Michael
另请注意,延迟加载会导致性能问题,具体取决于您将拥有多少个团队。使用延迟加载时,您可能会有'1 + n = <调用数据库>',其中'n'是数据库中的团队数。 – Michael
@Michael在文章的Eager Loading部分,它说你可以使用.Include(),我曾尝试过,但由于某种原因,它只返回第一队和第一队的第一场比赛。就像它在json输出中显示的一样。你碰巧知道为什么它没有得到所有的结果? – Aaron