EF CTP5 - сильно загруженная активная загрузка - как включить вложенные навигационные свойства? - PullRequest
29 голосов
/ 27 января 2011

Попытка перевести наше решение EF4 на EF CTP5 и столкнулась с проблемой.

Вот соответствующая часть модели:

enter image description here

Соответствующие отношения: - В одном округе есть много городов - Один Город имеет одно государство

Теперь я хочу выполнить следующий запрос: - Получите все округа в системе, и включите все города и все штаты для этих городов.

В EF4 я бы сделал это:

var query = ctx.Counties.Include("Cities.State");

В EF CTP5 у нас есть строго типизированный тип «Включить», который принимает Expression<Func<TModel,TProperty>>.

Я могу получить все города для округа без проблем:

var query = ctx.Counties.Include(x => x.Cities);

Но как я могу получить State для этих городов?

Я использую чистые POCO, поэтому County.Cities - это ICollection<City>, поэтому я не могу сделать это:

var query = ctx.Counties.Include(x => x.Cities.State)

Поскольку ICollection<City> не имеет свойства с именем State.

Мне почти нужно использовать вложенный IQueryable.

Есть идеи? Нужно ли переходить на волшебную строку «Включить в этот сценарий»?

1 Ответ

51 голосов
/ 27 января 2011

Для этого вы можете использовать метод Выбор :

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State))

Здесь вы можете найти другой пример.

...