У меня только что был огромный * светлый момент ** , но это вызвало раздражение, которое меня раздражает. иметь с 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
и т. Д. Не работают).
** это просто оборот фраз, я очень люблю блондинок *