2 回答
TA贡献1757条经验 获得超7个赞
您想要实现的目标可以通过Eager Loading轻松完成,可以在此处或此处阅读有关它的更多信息。你所得到的错误是,你不能合并LINQ与原始SQL(Include
和Select
你的情况)。
您想加载通过Include和ThenInclude方法实现的多个级别。一个例子是
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ToList();
}
对于您的上下文,它将是:
var info = context.Info.
Include(subInfo => subInfo.SubInfo).
ThenInclude(subSubInfo => subSubInfo.SubSubInfo).
ToList();
whereSubInfo和SubSubInfo是模型的导航属性。还要考虑到您必须提及您使用的是.NET Core还是.NET Framework,因为.NET Core不支持延迟加载。
但我看到@AliJP 已经回答了你的问题。
编辑结束
如果您想了解有关此主题的更多信息,请尝试阅读有关Eager Loading和Lazy Loading 的内容。
TA贡献1775条经验 获得超11个赞
当您使用多个包含时,您必须首先包含您的第一个级别。在您的示例中:
var info = context.Info.Include(x=> x.SubInfo) .Include(x=> x.SubInfo.Select(y=> y.SubSubInfo ));
如果您使用 EF Core,也可以使用 ThenInclude()。
有关详细信息,请参阅下面的链接
http://entityframework.net/include-multiple-levels
- 2 回答
- 0 关注
- 180 浏览
添加回答
举报