在实体框架核心中选择多个子表的嵌套级别



我想使用热切加载在Entity Framework Core中获得多个嵌套级别的子表。我认为懒惰加载还没有实现。

我找到了EF6的答案。

var company = context.Companies
                 .Include(co => co.Employees.Select(emp => emp.Employee_Car))
                 .Include(co => co.Employees.Select(emp => emp.Employee_Country))
                 .FirstOrDefault(co => co.companyID == companyID);

我的问题是Select在EF Core 中无法识别

错误CS1061"Employees"不包含"Select"的定义,并且找不到接受"Employmes"类型的第一个参数的扩展方法"Select"(是否缺少using指令或程序集引用?)

我包含的命名空间:

using MyProject.Models;
using Microsoft.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

EF Core中Select的备选方案是什么。

您可以使用关键字ThenInclude代替

例如

var company = context.Companies
             .Include(co => co.Employees).ThenInclude(emp => emp.Employee_Car)
             .Include(co => co.Employees).ThenInclude(emp => emp.Employee_Country)
             .FirstOrDefault(co => co.companyID == companyID);

此外,TheInclude intellisense for只能工作到第三级,例如:

_Context.A.Include(a => a.B).ThenInclude(B => B.C).ThenInclude(C => C.D)

声明的最后一部分:

 .ThenInclude(C => C.D)

不会显示"D",所以你必须自己键入D,然后等待一小段时间,编译错误才会消失!

最新更新