J'ai une solution où j'ai créé des entités de suivi automatique en utilisant les modèles RTM. J'ai divisé les entités et le contexte entre 2 projets afin que je puisse réutiliser les définitions de type que j'ai l'intention d'exécuter le client/serveur par l'intermédiaire de WCF.Entity Framework 4: Eager Chargement (Inclure) avec des filtres utilisant des entités de suivi automatique
Une de mes méthodes de service est requise pour renvoyer un graphique des objets "Product" avec des objets enfants de "ProductSku" et ceux-ci ont à leur tour des objets enfants de "ProductPrice". Les critères de sélection seront sur la propriété "Name" de l'objet "Product" et la propriété "FinancialPeriodID" de "ProductPriceObject". Pour l'instant, je n'inclus pas le nom dans la recherche, mais j'ai des problèmes pour ramener le graphique.
Si j'effectuez simplement la requête suivante (note, cette syntaxe est tirée de LINQPad plutôt que le code d'application réelle) ...
from product in Products.Include("Skus.PriceHistory")
select product
... je suis en mesure de récupérer le plein graphe d'objet pour les articles dont j'ai besoin, bien sûr, à ce stade, il n'y a pas de filtre.
Si, au contraire, je vous présente le filtre comme suit ...
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
... ce que j'attends de retourner les objets est « produit », l'enfant des objets « productSKU » (qui sont en la collection "Skus" du "Produit") et leurs objets "ProductPrice" (qui sont dans la collection "PriceHistory" du "ProductSku") - mais je récupère seulement les objets "Product", la collection "Skus" est vide.
J'ai aussi essayé coder la requête comme ...
from product in Products.Include("Skus.PriceHistory")
from sku in product.Skus
from price in sku.PriceHistory
where price.FinancialPeriodID == 244
select product
... mais cela fait soit pas de différence.
De toute évidence, je dois faire quelque chose de mal. Quelqu'un peut-il nous éclairer sur ce que c'est que ce que je fais depuis quelques heures maintenant en rond!
Désolé, « SKUS » et « PriceHistory » sont les deux collections, il est donc impossible de naviguer tout le long du chemin dans une seule déclaration. Je crains qu'il n'y ait pas d'autre option que d'inclure les jointures en utilisant soit la jointure, soit le from comme indiqué dans les deux exemples. Merci quand même. –
Cela n'a peut-être pas aidé @MartinRobins, mais cela m'a aidé dans mon propre projet! +1 Cette syntaxe a fonctionné pour moi (installation peut-être totalement différente de la question originale, je ne sais pas ...) – BenSwayne