Ok, I have tri-leveled entities with the following hierarchy: Course -> Module -> Chapter

以下是最初的EF LINQ声明:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Single(x => x.Id == id); 

现在,我想包括另一个与课程相关的实体,名为Lab.

如何包含Lab实体?

我try 了以下方法,但没有成功:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
                .Single(x => x.Id == id); 

对加入第二实体有什么 idea 吗?

任何建议或信息都将不胜感激.谢谢

推荐答案

您是否try 过再添加Include个:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Include(i => i.Lab)
                .Single(x => x.Id == id);

您的解决方案失败了,因为Include不接受布尔运算符

Include(i => i.Modules.Select(s => s.Chapters) &&          i.Lab)
                           ^^^                  ^             ^ 
                          list           bool operator    other list

Update

首先,SelectInclude之间的区别在于,通过 Select ,您决定返回what(也称为投影).Include是一个Eager Loading函数,它告诉Entity Framework您希望它包含来自其他表的数据.

INCLUDE语法也可以是字符串形式.如下所示:

           db.Courses
            .Include("Module.Chapter")
            .Include("Lab")
            .Single(x => x.Id == id);

LinqPad个样本更好地解释了这一点.

.net相关问答推荐

";Make Async ValueTask/ValueTask方法分期分配发生了什么?

dotnet 8 web api在部署到docker后无法工作

竖线在 PropertyGroup .csproj 文件中的含义

无法解析此引用.找不到程序集

防止对话框在按钮的单击事件处理程序中关闭

如何在 C# 4.0 中使任务进入睡眠状态(或延迟)?

大型 WCF Web 服务请求因 (400) HTTP 错误请求而失败

有没有办法只在 C# 中设置一次属性

非通用 TaskCompletionSource 或替代

何时使用抽象类?

从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换

如何在安装后立即启动 .NET Windows 服务?

如何在 nuspec 中指定特定的依赖版本?

如何从 WCF REST 方法返回自定义 HTTP 状态代码?

IronPython 与 Python .NET

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

如何卸载Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1?

NServiceBus 与 MassTransit

如何为 Dapper 查询动态创建参数

检测到包降级警告(dotnet core,vs 2017)