データベーススキーマを作成してコードを生成するために、Entity Frameworkを使用しました。私は、Employeeというテーブルを持っていて、そのテーブルには、DaysOffテーブルに子レコードがあります。 DaysOffにはEmployeeに対する外部キーがあり、私のモデルには1対1の関連があります。私はEmployeeテーブルでLINQクエリを実行し、私のDomain.EmployeeオブジェクトにDaysOffが設定されていて、DaysOffがnullであると予想していました。オブジェクトをドリルダウンすると、「employee.DaysOff.CountがSystem.ObjectDisposedException型の例外をスローしました」と表示されます。子供の記録に人が住むと思うのは間違っていますか?どうすればいい?ここで私は私の従業員を取得するために呼び出す方法は次のとおりです。LINQ子レコードnull
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;
}
}
はEDIT: 以下受け入れ答えの組み合わせとコメント(すべてのアップ投票は)この問題を解決するために私を助けた(イェーイ!):
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
参照:http://msdn.microsoft.com/en-us/library/bb896272 – CodingGorilla