我使用實體框架的創建數據庫模式,並生成我的代碼。我有一個名爲Employee的表,它有DaysOff表中的子記錄。 DaysOff具有員工的外鍵,並且在我的模型中有1 to *關聯。我在Employee表上運行了一個LINQ查詢,並期望我的Domain.Employee對象將被DaysOff填充,但DaysOff爲空。當我在對象中鑽取時,我看到「employee.DaysOff.Count拋出了System.ObjectDisposedException類型的異常」。我認爲孩子記錄將被填充是錯誤的嗎?我將如何做到這一點?下面是我打電話讓我的員工的方法:LINQ子記錄空
public static Domain.Employee SelectEmployee(int employeeId)
{
using (var db = new EmployeeEntities())
{
Domain.Employee emp = (from e in db.Employees
where e.EmployeeId == employeeId
select e
).FirstOrDefault();
return emp;
}
}
編輯: 下面的接受的答案和註釋的組合(所有上投票)幫我解決這個(耶!):
public static Domain.Employee SelectEmployee(int employeeId)
{
using (var db = new EmployeeEntities())
{
Domain.Employee emp = (from e in db.Employees.Include("DaysOff")
where e.EmployeeId == employeeId
select e).FirstOrDefault();
return emp;
}
}
是。這是LINQ稱爲延遲加載/延期執行的基本原則。您可能會發現閱讀某些(大量)文檔很有幫助,例如:http://www.rizalalmashoor.com/blog/linq-to-entities-deferred-execution-and-lazy-loading/ – mellamokb 2012-07-20 15:38:03
見:http://msdn.microsoft.com/en-us/library/bb896272 – CodingGorilla 2012-07-20 15:39:57