2

このような「リスト」を検索しているときは DbSet<T>.Where(predicate)追加できます.Include("xxx")が、それは単一のオブジェクトには当てはまりません。

virtual Icollection<T>呼び出し時にEFにプロパティをロードさせる方法がわかりませんDbSet<T>.Find(id)

4

1 に答える 1

5

現在の API では、 Findメソッドで熱心な読み込みを行うことはできません。

Entity Framework 5 のパフォーマンスに関する考慮事項から

Find メソッドを使用する際に考慮しなければならないことは、次のとおりです。

...

また、Find は探しているエンティティのみを返すことに注意してください。関連付けられたエンティティがまだオブジェクト キャッシュにない場合、それらは自動的に読み込まれません。関連付けられたエンティティを取得する必要がある場合は、熱心な読み込みでキーによるクエリを使用できます。

したがって、最も近いのは、たとえば次を使用してクエリを実行することです。SingleOrDefault

dbSet.Include("xxx").SingleOrDefault(i => i.Id == id)

または、検索後に関連エンティティを明示的にロードできます。

using (var context = new Db())
{
    var entity = context.SomeSet.Find(id);

    context.Entry(entity).Collection(p => p.SomeCollection).Load();
}
于 2012-09-19T07:08:03.213 に答える