Comment puis-je avec impatience, l'enfant et petit-enfant les éléments d'une entité Entity Framework Code First?
Imaginez trois entités (Clients, un Livre, un Auteur) liés comme ceci:
Un Client a de nombreux Livres
Un Livre a un Auteur
Je utiliser ces données pour imprimer un rapport comme ceci:
Customer: Peter
Book: To Kill a Mockingbird - Author: Harper Lee
Book: A Tale of Two Cities - Author: Charles Dickens
Customer: Melanie
Book: The Hobbit - Author: J. R. R. Tolkien
Quand j'ai une requête pour les Clients que je reçois, comme prévu, un tas de requêtes de la nature suivante
- Une requête pour obtenir les Clients
- Une requête par le Client pour obtenir ses Livres
- Une requête par Livre pour en obtenir son auteur
Je peux réduire le nombre de requêtes par y compris les livres comme:
var clients = db.Clients.Inclure(c => c.Les livres);
Mais je ne sais pas comment faire pour charger le troisième niveau (Auteur). Comment puis-je le faire?
Vous devez vous connecter pour publier un commentaire.
Il y a une surcharge pour
Include
qui accepte une chaîne de caractères qui peut indiquer le chemin d'accès complet à toutes les propriétés supplémentaires dont vous avez besoin:Il semble étrange parce que "Auteur" n'est pas une propriété sur une collection de livres (plutôt une propriété sur chaque livre), mais il fonctionne. Lui donner un tourbillon.
Select
, comme par @tdykstra de réponse.Aussi, il n'est pas nécessaire d'utiliser la chaîne de surcharge. Cette méthode sera trop de travail:
Pour plus d'exemples, voir l'équipe EF post de blog:
http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx
Et ce tutoriel:
http://www.asp.net/entity-framework/tutorials/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application
Vous pouvez utiliser
ThenInclude
mot-clé:var customers = db.Customers.Include(c => c.Books).ThenInclude(book => book.Author));}