Tengo una solución en la que he creado entidades de auto-seguimiento usando las plantillas RTM. He dividido las entidades y el contexto entre 2 proyectos para poder reutilizar las definiciones de tipo ya que planeo ejecutar el cliente/servidor a través de WCF.Entity Framework 4: Eager Loading (Include) con filtros usando Self Tracking Entities
Uno de mis métodos de servicio es necesario para devolver un gráfico de objetos "Producto" con objetos secundarios de "ProductSku" y estos a su vez tienen objetos secundarios de "ProductPrice". Los criterios de selección estarán en la propiedad "Nombre" del objeto "Producto" y en la propiedad "FinancialPeriodID" del "ProductPriceObject". Por ahora, no incluyo el nombre en la búsqueda, pero estoy teniendo problemas para regresar el gráfico.
Si sólo tiene que realizar la siguiente consulta (nota, esta sintaxis se toma de LINQPad en lugar del código de la aplicación real) ...
from product in Products.Include("Skus.PriceHistory")
select product
... entonces soy capaz de recuperar el gráfico de objetos completa para los artículos que requiero, por supuesto en este momento no hay filtro.
Si por el contrario, les presento el filtro de la siguiente manera ...
from product in Products.Include("Skus.PriceHistory")
join sku in ProductSkus on product.ID equals sku.ProductID
join price in ProductPrices on sku.ID equals price.ProductSkuID
where price.FinancialPeriodID == 244
select product
... lo que estoy esperando para volver son los objetos "producto", el niño objetos "productSku" (que se encuentran en la colección "Skus" del "Producto") y sus objetos "ProductPrice" (que están en la colección "PriceHistory" del "ProductSku"), pero solo recupero los objetos "Product", la colección "Skus" es vacío.
También he tratado de codificación de la consulta como ...
from product in Products.Include("Skus.PriceHistory")
from sku in product.Skus
from price in sku.PriceHistory
where price.FinancialPeriodID == 244
select product
... pero esto no hace ninguna diferencia tampoco.
Claramente, debo estar haciendo algo mal. ¿Alguien puede arrojar algo de luz sobre lo que es ese algo, como lo he estado haciendo durante algunas horas dando vueltas en círculos?
lo sentimos, "SKU" y "PriceHistory" son ambas colecciones, por lo que no es posible navegue todo el camino hacia abajo en una sola instrucción. Me temo que no hay más opción que incluir las uniones usando la unión o la de, como se muestra en los dos ejemplos. Gracias de todos modos. –
Esto podría no haber ayudado a @MartinRobins, ¡pero me ayudó en mi propio proyecto! +1 Esta sintaxis funcionó para mí (tal vez una configuración totalmente diferente a la pregunta original, no sé ...) – BenSwayne