นี่อาจเป็นคำถามที่เข้าใจง่ายมาก แต่วิธีที่ดีในการรวมหลายเอนทิตีเด็กเมื่อเขียนเคียวรีที่ครอบคลุมสามระดับ (หรือมากกว่านั้น) คืออะไร
คือผมมี 4 ตาราง: Company
, Employee
, Employee_Car
และEmployee_Country
บริษัท มีความสัมพันธ์แบบ 1: m กับพนักงาน
พนักงานมีความสัมพันธ์แบบ 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