好的,我有具有以下层次结构的三级实体:类(class) -> 模块 -> 章节
以下是原始 EF LINQ 语句:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters))
.Single(x => x.Id == id);
现在,我想添加另一个名为 Lab 的实体,该实体与类(class)关联。
如何包含实验室实体?
我尝试了以下方法,但没有成功:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
.Single(x => x.Id == id);
关于包含第二个实体有什么想法吗?
任何建议或信息将不胜感激。谢谢!
最佳答案
您是否尝试过添加另一个包含
:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters))
.Include(i => i.Lab)
.Single(x => x.Id == id);
您的解决方案失败,因为 Include
不采用 bool 运算符
Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
^^^ ^ ^
list bool operator other list
更新 要了解更多信息,请下载LinqPad并查看样本。 我认为这是熟悉 Linq 和 Lambda 的最快方法。
首先 - Select
和 Include
之间的区别在于,通过 Select,您可以决定内容你想要返回(又名投影)。 Include 是一个预加载函数,它告诉 Entity Framework 您希望它包含来自其他表的数据。
包含语法也可以是字符串。像这样:
db.Courses
.Include("Module.Chapter")
.Include("Lab")
.Single(x => x.Id == id);
但是LinqPad中的样本更好地解释了这一点。
关于.net - EF LINQ 包括多个嵌套实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15764572/