acabo de tener una masiva *blonde moment**, pero que ha destacado una molestia que tengo con Entity Framework. Tengo la carga diferida discapacitados, así que estoy forzándome a pensar realmente acerca de lo que los datos que requiero con el fin de mantener la aplicación lo más rápido posible.Entity Framework - navegar e incluyendo propiedades a través de colecciones
Así que con el fin de devolver los datos dentro de una consulta, tengo que hacer uso del método Include
:
var query = from item in context.Customers
.Include(x=> x.Orders)
select item
Esto está bien hasta que yo quiero para seleccionar un elemento un poco más en la jerarquía. Es decir:
Customer 1-* Orders *-1 Factory 1-1 Factory Type
Por lo que yo sé, la única manera de devolver todos estos datos ansiosamente sería hacer lo siguiente:
var query = from item in context.Customers
.Include("Orders.Factory.FactoryType")
select item
Con lo anterior no soy capaz de haga uso de System.Data.Entity
Lambdas según mi primer ejemplo. ¿Alguien sabe si me falta algo obvio aquí, o estoy atrapado con el uso de declaraciones de cadenas para mis propiedades de navegación a través de colecciones?
Si yo no tenía ningún colecciones, sólo podría escribir:
.Include(x=> x.Order.OrderType.Factory.FactoryType) // No bother
Pero debido a la colección Orders
, no hay manera de dar un paso a través de una propiedad secundaria por lo que yo puedo decir (FirstOrDefault
, SingleOrDefault
, etc., no funcionan).
** es sólo una vez-de-frase, da la casualidad que muy aficionado a las rubias *