Entity Framework рекурсивно включает в себя сбор для каждого объекта из включенной коллекции
У меня есть следующее, где я пытаюсь включить адреса людей в городах стран.
Country country = _db.Countries
.Include(p=>p.Cities.People.????)
.Where(....)
Не знаете, как это сделать?
Ответы
Ответ 1
Из документации:
Чтобы включить коллекцию, коллекцию и ссылку на два уровня вниз:
query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection.Select(l2 => l2.Level3Reference))).
Итак, в вашем случае попробуйте
Country country = _db.Countries
.Include(c=>c.Cities.Select(
cc => cc.People.Select(
p => p.Addresses)))
.Where(....)
Доступ к этому методу расширения требует директивы
using System.Data.Entity;
Ответ 2
Вы должны добавить приглашение .Include для каждого уровня в дереве иерархии объектов:
var result = db.Countries
.Include(m => m.Cities)
.Include(m => m.Cities.Select(v => v.People))
.Where(....)
Изменить: ответ D.Stanley лучше с точки зрения компактного кода и работает также, я предпочитаю этот синтаксис с точки зрения модульности.