Ok, j'ai des entités à trois niveaux avec la hiérarchie suivante: Cours -> Module -> Chapitre
Voici la déclaration EF LINQ originale:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters))
.Single(x => x.Id == id);
Maintenant, je veux inclure une autre entité appelée Lab qui est associée à un cours.
Comment inclure l'entité Lab?
J'ai essayé ce qui suit mais cela n'a pas fonctionné:
Course course = db.Courses
.Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
.Single(x => x.Id == id);
Des idées pour inclure la 2ème entité?
Tout conseil ou information serait très apprécié. Merci!
.Include
devrait fonctionner à moins que vous ne vouliez dire que l'inclusion supplémentaire est bien sûr un petit-enfant. Voir ceci ou une meilleure option est celle-ciRéponses:
Avez-vous essayé d'ajouter un autre
Include
:Votre solution échoue car
Include
ne prend pas d'opérateur booléenMise à jour Pour en savoir plus, téléchargez LinqPad et parcourez les exemples. Je pense que c'est le moyen le plus rapide de se familiariser avec Linq et Lambda.
Pour commencer - la différence entre
Select
etInclude
est qu'avec un Select vous décidez ce que vous voulez retourner (aka projection). L'inclusion est une fonction de chargement hâtif, qui indique à Entity Framework que vous souhaitez qu'il inclue les données d'autres tables.La syntaxe Inclure peut également être sous forme de chaîne. Comme ça:
Mais les exemples de LinqPad l' expliquent mieux.
la source
.Include("Module.Chapter")
. Une idée pourquoi cela serait-il?System.Data.Enity
de noms pour accéder à la méthode d' extension. plus d'infos iciusing System.Data.Entity;
l'a fait. Merci!Dans Entity Framework Core (
EF.core
), vous pouvez utiliser.ThenInclude
pour inclure les niveaux suivants.Plus d'informations: https://docs.microsoft.com/en-us/ef/core/querying/related-data
Note: Dites que vous avez besoin de plusieurs
ThenInclude()
surblog.Posts
, il suffit de répéter laInclude(blog => blog.Posts)
et faire une autreThenInclude(post => post.Other)
.la source
ThenInclude
dans EF core. Peut-être posez-vous une question avec un bon exemple, afin que nous puissions y répondre.Include
fait partie de l'interface fluide, vous pouvez donc écrire plusieursInclude
instructions les unes après les autresla source
Vous pouvez également essayer
la source
On peut écrire une méthode d'extension comme celle-ci:
Et utilisez-le comme ça même dans une implémentation générique:
la source
Include