Подтвердить что ты не робот

Выберите несколько вложенных уровней дочерних таблиц в Entity Framework Core

Я хочу получить несколько вложенных уровней дочерних таблиц в 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 "Сотрудники" не содержит определения для "Выбрать" и не может быть найден метод расширения "Выбрать", принимающий первый аргумент типа "Сотрудники" (вам не хватает директивы использования или ссылки на сборку?)

Мои включенные пространства имен:

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

Какая альтернатива для Select в EF Core.

4b9b3361

Ответ 1

ThenInclude этого вы можете использовать ключевое слово 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);

Ответ 2

Кроме того,.ThenInclude intellisense для работает только до 3-го уровня, например:

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

Последняя часть этого заявления:

 .ThenInclude(C => C.D)

не будет показывать "D", поэтому вы должны ввести D самостоятельно, а затем подождать некоторое время, пока ошибка компиляции не исчезнет!