Imaginez trois entités (client, livre, auteur) liées comme suit:
Un client a beaucoup de livres
Un livre a un auteur
J'utilise ces données pour imprimer un rapport comme celui-ci:
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
Comme je le fais pour les clients, je reçois, comme prévu, un ensemble de requêtes de la nature suivante
Je peux réduire le nombre de requêtes en incluant les livres comme suit:
var clients = db.Customers.Include (c => c.Books);
Mais je ne sais pas comment charger le troisième niveau (Auteur). Comment puis je faire ça?
Il y a une surcharge pour Include
qui accepte une chaîne qui peut indiquer le chemin complet de toutes les propriétés supplémentaires dont vous avez besoin:
var customers = db.Customers.Include("Books.Author");
Cela semble étrange, car "Auteur" n'est pas une propriété d'une collection de livres (mais une propriété de chaque livre), mais cela fonctionne. Essayer.
De plus, il n'est pas nécessaire d'utiliser la surcharge de chaîne. Cette méthode fonctionnera aussi:
var customers = db.Customers.Include(c => c.Books.Select(b => b.Author));
Pour plus d'exemples, consultez l'article de blog de l'équipe EF: http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part- 6-loading-related-entity.aspx
Et ce tutoriel: http://www.asp.net/entity-framework/tutorials/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application