190 votes

Entity framework linq interroger Include() plusieurs entités enfants

Cela peut être un vraiment elementry question, mais ce qui est une belle façon d'inclure plusieurs enfants entités lors de l'écriture d'une requête qui s'étend sur TROIS niveaux (ou plus)?

c'est à dire que j'ai 4 tables: Company, Employee, Employee_Car et Employee_Country

La société a de 1 m de la relation avec les Employés.

Employé 1:m relation avec les deux Employee_Car et Employee_Country.

Si je veux écrire une requête qui renvoie les données de tous les 4 tables, je suis en train d'écrire:

Company company = context.Companies
                         .Include("Employee.Employee_Car")
                         .Include("Employee.Employee_Country")
                         .FirstOrDefault(c => c.Id == companyID);

Il y a une façon plus élégante! C'est de longue haleine et génère horribles SQL

Je suis à l'aide de EF4 avec VS 2010

Merci à l'avance!

209voto

Nix Points 22944

Utilisez les méthodes d’extension. Remplacez NameOfContext par le nom de votre contexte de l’objet.

Votre code deviendrait alors

26voto

Merijn Points 149

Vous pouvez trouver cet article d'intérêt qui est disponible sur codeplex.com.

L'article présente une nouvelle façon de s'exprimer des requêtes sur plusieurs tables à la forme déclarative graphique des formes.

En outre, l'article contient une minutieuse comparaison des performances de cette nouvelle approche avec EF requêtes. Cette analyse montre que la GBQ rapidement surpasse EF requêtes.

3voto

Andreas Rehm Points 1546

http://StackOverflow.com/questions/315966/How-do-you-Construct-a-LINQ-to-Entities-Query-to-load-Child-Objects-directly-ins

Il n’y a pas d’autre moyen - sauf la mise en œuvre de chargement différé.

Chargement manuel ou...

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