Це може бути справді елементарним питанням, але який приємний спосіб включити декілька дочірніх організацій під час написання запиту, який охоплює ТРИ рівні (або більше)?
тобто у мене є 4 таблиці: Company
, Employee
, Employee_Car
іEmployee_Country
Компанія має стосунки 1: м із працівником.
Співробітник має 1: m стосунки як з Employee_Car, так і з Employee_Country.
Якщо я хочу написати запит, який повертає дані з усіх 4 таблиць, я зараз пишу:
Company company = context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID);
Має бути більш елегантний спосіб! Це довго звивається і генерує жахливий SQL
Я використовую EF4 з 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