2011-01-20 2 views
25

C'est un code fonctionnel;Comprend plusieurs niveaux dans CodeFirst - EntityFrameWork

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field"); 

Mais vous savez qu'il ne pouvait pas produire erreur de compilation de temps si nous avons fait erreur dans l'instruction de chaîne dans « Contexts.AdditionalProperties.Field »

Je voudrais écrire du code ci-dessous; Mais l'instruction ci-dessus n'a pas permis de définir AdditionalProperties et Field.

Que devrions-nous faire?

Je voudrais écrire plus d'un include pour une requête de construction.

Merci.

Répondre

43

Si AdditionalProperties est une seule référence à un autre objet:

using System.Data.Entity; 
... 
IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Field) 
     .Where(p => p.Id == id); 


Si AdditionalProperties est une collection, vous pouvez utiliser la méthode Sélectionnez:

IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field)) 
     .Where(p => p.Id == id); 

Don 'oubliez pas d'importer System.Data.Enti ty namespace dans votre fichier de classe!

+1

Tu m'as battu dessus;) –

+0

Je dois te dire que ce n'était pas * un * jeu équitable ... Depuis que j'ai répondu à cette question il y a quelques mois ici. Désolé mec! –

+0

Merci pour la réponse rapide! Comment puis-je ajouter un autre où contion pour AdditionalProperties qui est un objet de type List <>? –

Questions connexes