Entity Framework - Навигация и включение свойств в коллекциях

У меня только что был огромный * светлый момент ** , но это вызвало раздражение, которое меня раздражает. иметь с Entity Framework. Я отключил отложенную загрузку, поэтому я заставляю себя думать о том, какие данные мне нужны, чтобы приложение работало как можно быстрее.

Итак, чтобы вернуть данные в запросе, мне нужно использовать метод Include :

var query = from item in context.Customers
                .Include(x=> x.Orders)
            select item

Это нормально, пока я не захочу выбрать элемент немного глубже в иерархии. Т.е.:

Customer 1-* Orders *-1 Factory 1-1 Factory Type

Насколько я знаю, единственный способ вернуть все эти данные с нетерпением - это сделать следующее:

var query = from item in context.Customers
                .Include("Orders.Factory.FactoryType")
            select item

С указанным выше я не могу использовать лямбды System.Data.Entity как в моем первом примере. Кто-нибудь знает, не хватает ли мне здесь чего-то очевидного или я застрял в использовании строковых объявлений для своих свойств навигации через коллекции?

Если бы у меня не было коллекций, я мог бы просто написать:

.Include(x=> x.Order.OrderType.Factory.FactoryType) // No bother

Но из-за коллекции Orders , насколько я могу судить, нет возможности перейти к дочернему свойству ( FirstOrDefault , SingleOrDefault и т. Д. Не работают).


** это просто оборот фраз, я очень люблю блондинок *

8
задан Community 23 May 2017 в 12:19
поделиться