Ho una soluzione in cui ho creato entità di auto-tracciamento utilizzando i modelli RTM. Ho diviso le entità e il contesto tra 2 progetti in modo da poter riutilizzare le definizioni dei tipi mentre pianifico di eseguire client/server tramite WCF.Entity Framework 4: caricamento Eager (Includi) con filtri che utilizzano le entità di auto-registrazione
Uno dei miei metodi di servizio è necessario per restituire un grafico di oggetti "Prodotto" con oggetti figlio di "ProductSku" e questi a loro volta hanno oggetti figlio di "ProductPrice". I criteri di selezione saranno nella proprietà "Nome" dell'oggetto "Prodotto" e nella proprietà "FinancialPeriodID" di "ProductPriceObject". Per ora, non includo il nome nella ricerca, ma sto riscontrando problemi nel riportare il grafico.
Se ho semplicemente eseguire la seguente query (nota, questa sintassi è preso da LINQPad piuttosto che il codice dell'applicazione effettiva) ...
from product in Products.Include("Skus.PriceHistory")
select product
... allora io sono in grado di recuperare l'oggetto grafico completo per gli articoli che richiedo, ovviamente a questo punto non ci sono filtri.
Se invece, introduco il filtro come segue ...
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
... quello che mi aspetto di tornare è l'oggetti "prodotto", il bambino oggetti "productSku" (che sono in la collezione "Skus" del "Prodotto") e i loro oggetti "ProductPrice" (che sono nella collezione "PriceHistory" del "ProductSku") - ma ottengo solo gli oggetti "Prodotto", la collezione "Skus" è vuoto.
Ho anche provato la codifica la query come ...
from product in Products.Include("Skus.PriceHistory")
from sku in product.Skus
from price in sku.PriceHistory
where price.FinancialPeriodID == 244
select product
... ma questo non fa alcuna differenza neanche.
Chiaramente, devo fare qualcosa di sbagliato. Qualcuno può far luce su quello che è qualcosa come sono stato a questo per alcune ore ora andando in tondo!
Purtroppo "SKU" e "StoricoPrezzi" sono entrambe le raccolte, quindi non è possibile navigare lungo il percorso in una singola istruzione. Temo che non ci sia altra scelta che includere i join usando il join o il come indicato nei due esempi. Grazie comunque. –
Questo potrebbe non aver aiutato @MartinRobins, ma mi ha aiutato nel mio progetto! +1 Questa sintassi ha funzionato per me (forse un setup completamente diverso rispetto alla domanda originale, non lo so ...) – BenSwayne