Cela peut être une question vraiment élémentaire, mais quelle est la bonne façon d'inclure plusieurs entités enfants lors de l'écriture d'une requête qui s'étend sur TROIS niveaux (ou plus)?
à- dire que j'ai 4 tables: Company
, Employee
, Employee_Car
etEmployee_Country
L'entreprise a une relation de 1: m avec l'employé.
L'employé a une relation 1: m avec Employee_Car et Employee_Country.
Si je veux écrire une requête qui renvoie les données des 4 tables, j'écris actuellement:
Company company = context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID);
Il doit y avoir une manière plus élégante! Ceci est long et génère un SQL horrible
J'utilise EF4 avec VS 2010
//inside public static class Extensions public static IQueryable<Company> CompleteCompanies(this DbSet<Company> table){ return table .Include("Employee.Employee_Car") .Include("Employee.Employee_Country") ; } //code will be... Company company = context.Companies.CompleteCompanies().FirstOrDefault(c => c.Id == companyID); //same for next advanced method