3 つのレコードを持つテーブル (Jobs) に対してクエリを実行しています。このテーブルには、JobTypes および Users というテーブルへの外部キーがあります。次のクエリを実行すると、3 つのレコードが返されますが、最初に返された結果の遅延読み込みしかできません。
IEnumerable<dynamic> jobs = _db.Jobs.All()
.Where(_db.Jobs.Completed == false)
.Where(_db.Jobs.RunAfter <= DateTime.Now);
Console.Out.WriteLine("Jobs Found: {0}", jobs.ToList().Count);
foreach(var job in jobs.ToList())
{
Console.Out.WriteLine("{0} from {1}", job.JobType.Name, job.User.Username);
}
出力は次のとおりです。
Jobs Found: 3
Some Job by admin
そしてエラーメッセージは次のとおりです:null参照でランタイムバインディングを実行できません
エラーの時点で、quickwatch を使用すると、job.JobType と job.User は両方とも null ですが、job.JobType_Id と job.User_Id の両方のプロパティが値として有効な GUID を持っています。
エラーは、foreach ループの 2 回目の繰り返しで発生します。現在、すべてのジョブのユーザー ID は同じですが、ジョブ タイプ ID は異なります。各テーブルで ID が正しいことを確認しました。遅延読み込み中にこのエラーを引き起こしている可能性のあるアイデアはありますか?