Essa pode ser uma pergunta realmente elementar, mas qual é uma boa maneira de incluir várias entidades filhas ao escrever uma consulta que abrange três níveis (ou mais)?
ou seja, eu tenho 4 mesas: Company
, Employee
, Employee_Car
eEmployee_Country
A empresa tem um relacionamento de 1: m com Funcionário.
O funcionário tem um relacionamento de 1: m com Employee_Car e Employee_Country.
Se eu quiser escrever uma consulta que retorne os dados de todas as 4 tabelas, atualmente estou escrevendo:
Company company = context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID);
Tem que haver uma maneira mais elegante! Isso é longo e gera SQL horrendo
Estou usando o EF4 com o 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