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

Entity Framework рекурсивно включает в себя сбор для каждого объекта из включенной коллекции

У меня есть следующее, где я пытаюсь включить адреса людей в городах стран.

Country country = _db.Countries
               .Include(p=>p.Cities.People.????)
               .Where(....)

Не знаете, как это сделать?

4b9b3361

Ответ 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 лучше с точки зрения компактного кода и работает также, я предпочитаю этот синтаксис с точки зрения модульности.