我想使用热切加载在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,然后等待一小段时间,编译错误才会消失!