28 votes

EF CTP5 - Strongly-Typed Eager Loading - Comment inclure des propriétés de navigation imbriquées ?

J'essaie de passer de notre solution EF4 à EF CTP5, et je rencontre un problème.

Voici la partie pertinente du modèle :

enter image description here

La relation pertinente : - Un seul Comté a plusieurs villes - Un seul Ville a un État unique

Maintenant, je veux exécuter la requête suivante : - Obtenir tous les comtés du système, et inclure toutes les villes, et tous les états de ces villes.

Dans EF4, je ferais ceci :

var query = ctx.Counties.Include("Cities.State");

Dans EF CTP5, nous avons un Include fortement typé, qui prend un Expression<Func<TModel,TProperty>> .

Je peux obtenir toutes les villes du comté sans problème :

var query = ctx.Counties.Include(x => x.Cities);

Mais comment puis-je obtenir le État pour ces villes aussi ?

J'utilise des POCO purs, donc County.Cities est un ICollection<City> Je ne peux donc pas le faire :

var query = ctx.Counties.Include(x => x.Cities.State)

Comme ICollection<City> n'a pas de propriété appelée State .

C'est comme si je devais utiliser un IQueryable imbriqué.

Avez-vous des idées ? Dois-je me rabattre sur la chaîne magique Include dans ce scénario ?

47voto

Morteza Manavi Points 20486

Pour cela, vous pouvez utiliser le Sélectionnez méthode :

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State))

Ici vous pouvez trouver un autre exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X