在Entity Framework Core中选择多个嵌套级别的子表

时间:2015-12-02 14:12:26

标签: entity-framework-core

我想使用预先加载在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的替代方案是什么。

2 个答案:

答案 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,然后等待一小段时间以使编译错误消失!