【发布时间】:2023-03-03 03:14:01
【问题描述】:
我正在使用 EntityFramework Core 1.1.0。我可以查询表并加载实体,但微软的说明表明如果我想加载关系数据,我应该使用.Include() 函数:
https://docs.microsoft.com/en-us/ef/core/querying/related-data
您可以使用
Include方法指定要包含在查询结果中的相关数据。在以下示例中,结果中返回的博客的Posts属性将填充相关帖子。using (var context = new BloggingContext()) { var blogs = context.Blogs .Include(blog => blog.Posts) .ToList(); }
我没有.Include() 选项。
任何想法为什么会丢失或如何加载外键关系数据?
this.context.Mail
.Include("Files") // This is missing
我已经诉诸于显式加载关系数据。这对于小型结果集来说很好,但随着我的数据集增长,这会让我很伤心。
var mails = this.context.Mail.ToList();
mails.ForEach(mail =>
{
this.context.Entry(mail)
.Collection(m => m.Files)
.Load();
});
【问题讨论】:
-
你能告诉我们你是如何在邮件类中为关系表建模的吗?
-
Dai.. 您的编辑适用于 EF6 及更低版本。我正在使用 EF-Core... 该版本中的 DbSet 似乎没有“Include()”选项。
-
Dai...我可能缺少一个 nuget 包,但据我所知,Entity Framework Core 中没有 Include()。我知道你分享的文档说它们是针对 Core 的,我今天已经阅读了好几次......这些文档是我问这个问题的原因......它说使用 Include(),但我没有那个选项。
-
要通知某人,你需要这个语法:@Dai。我现在已经为你做到了。此外,他只是改进了你的问题,因为你错过了提供你的研究来源。 (微软表示如果我想加载关系数据,我应该使用 .Include() 函数)
-
@ChristianGollhardt - 感谢您的提示!我对在这里提问很陌生。我看到他没有尝试回答。
标签: c# entity-framework entity-framework-core