0

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 が正しいことを確認しました。遅延読み込み中にこのエラーを引き起こしている可能性のあるアイデアはありますか?

4

1 に答える 1

0

構成ファイルにMultipleActiveResultSets=trueを追加しようとしましたか?

于 2013-03-05T15:00:29.373 に答える