0

コンテキストに新しいエンティティを追加しています。追加が完了したら、すべての参照コレクションを設定したいと思います。問題は、add() 中に作成したコンテキストから同じエンティティを読み取っていることです。基本的に EF は DB に移動しません。これは正しい動作ですが、どうすれば回避できますか?

    Repo().Add(newEntity);
    Repo().Reload(newEntity);  

これにより、DB からエンティティがリロードされますが、参照 (FK 関係) を取得できません。参照をロードする方法を見つけましたが、エンティティのすべての参照をロードする一般的な方法が必要です。

var entry = Context.Entry(entity);
entry.Reference("ReferenceName").Load();

上記は正しいアプローチですか、それとも他の方法がありますか?

4

1 に答える 1

1

リポジトリ コードが表示されない場合、遅延読み込みの問題だと思います。

このサイトでは、熱心な読み込みと遅延読み込みについて説明しています: http://msdn.microsoft.com/en-us/data/jj574232.aspx

レポで .Include() を使用して、戻したい参照を正確に指定できます (すべてを必要としない長いチェーンに適しています)。

context.Set<whateverType>.Include(t => t.(whatever you are referencing)).Where(t => t.id = id);

または、熱心な読み込みを使用するようにコンテキストを指定し、取得ですべてを戻すこともできます。

context.LazyLoadingEnabled = false;
于 2013-08-22T16:22:45.757 に答える