.net - EF LINQ 包括多个嵌套实体

标签 .net asp.net-mvc-3 linq entity-framework entity-framework-5

好的,我有具有以下层次结构的三级实体:类(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 的最快方法。

首先 - SelectInclude 之间的区别在于,通过 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/

相关文章:

c# - 如何在 LINQ WHERE 中防止 System.IndexOutOfRangeException?

c# - 如何在 Linq 表达式中处理 IDisposableobject create?

c# - 如何在 C# 中解码包含 XML 文档的 base64 编码字符串,该文档包含带有重音符号 (á,é,í,ó,ú) 的字符?

c# - 带有预共享字典的 .NET 二进制 XML

jQuery Validate Unobtrusive 不适用于 TextArea

asp.net - ASP.NET MVC问题与表单例份验证部分的配置

c# - Linq NHibernate 查询子项

c# - 将 JSON 反序列化为字符串数组

c# - 从 Windows 服务启动 Windows 应用程序

c# - 如何通过 asp.net-webform 项目模板创建 asp.net-mvc3 项目(不要安装 asp.net-mvc3-dlls 和 asp.net-mvc3-vs-tool)?