これは本当に基本的な質問かもしれませんが、3レベル(またはそれ以上)にまたがるクエリを作成するときに複数の子エンティティを含めるための良い方法は何ですか?
つまり、私は4つのテーブルを持っている:Company
、Employee
、Employee_Car
およびEmployee_Country
会社は従業員と1:mの関係があります。
従業員は、Employee_CarとEmployee_Countryの両方と1:mの関係にあります。
4つのテーブルすべてからデータを返すクエリを記述したい場合は、現在次のように記述しています。
Company company = context.Companies
.Include("Employee.Employee_Car")
.Include("Employee.Employee_Country")
.FirstOrDefault(c => c.Id == companyID);
よりエレガントな方法が必要です!これは長く巻き込まれ、恐ろしいSQLを生成します
VS 2010でEF4を使用しています
//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