我想使用预先加载在Entity Framework Core中获得多个嵌套级别的子表。我不认为延迟加载已经实现。
我找到了EF6的answer。
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);
我的问题是在EF Core中无法识别Select
错误CS1061'Employees'不包含'Select'的定义,也没有扩展方法'Select'接受类型'Employees'的第一个参数(你是否缺少using指令或汇编引用?)< / p>
我包含的名称空间:
using MyProject.Models;
using Microsoft.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
EF Core中Select
的替代方案是什么。
答案 0 :(得分:46)
您可以使用关键字ThenInclude
代替
e.g。
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);
答案 1 :(得分:0)
此外,.ThenInclude智能感知仅适用于第3级,例如:
_Context.A.Include(a => a.B).ThenInclude(B => B.C).ThenInclude(C => C.D)
该语句的最后一部分:
.ThenInclude(C => C.D)
不会显示“ D”,因此您必须自己输入D,然后等待一小段时间以使编译错误消失!