つまり、エンティティを取得してObjectContextを破棄すると、すべてのエンティティを明示的にデタッチする必要がありますか?私のObjectContextを破棄した場合、エンティティは切り離されていますか?
8
A
答えて
2
エンティティは、コンテキストが破棄されるとデタッチされます。以下の記事を参照してください:
5
ありませんあなたは、エンティティに切り離す呼び出す必要はありません。あなたが何かを行う場合は、:
var people = Context.Person.Where(p => p.FirstName == "John");
をして、あなたのコンテキストを処分のIEnumerableが実行を延期したため、人々は、例外がスローされます。これを行う:
あなたの人リストを引き続き使用できます。文脈が配置された後、あなたが特定のエンティティではなく列挙をフェッチしたので
さらに、
var john = Context.Person.FirstOrDefault(p => p.Id == 342);
は、動作します。
7
多分Detach
の意味に依存します。添付されたエンティティは、コンテキストがエンティティについて知っていて、その変更を追跡することを意味します。コンテキストを破棄すると、それ以上変更を追跡できなくなり、エンティティは切り離されたようになります。ここでのような意味合いが本当にあります。
動的プロキシ(POCO - ダイナミックな変更の追跡またはレイジーローディング)を使用している場合、プロキシ自体はコンテキストに対して内部的に後方参照を保持しますが、コンテキストの廃棄には反応しません。それはまだ参照(btw。これはいくつかの厄介なメモリリークのソースになることができます)を保持します。これは、2つの状況で問題を起こす:
- あなたはそれが(元のコンテキストがすでに死んでいるという事実にもかかわらず)エンティティは、単一のコンテキストによって追跡することができますいくつかの例外がスローされます別のコンテキストに、このようなエンティティを添付しようとします。
- あなたが熱心にロードされていないナビゲーションプロパティにアクセスしようとすると、プロキシが廃棄されたコンテキストで遅延ロードを引き起こすため、
ObjectDisposedException
が返されます。
これを回避する唯一の方法は、動的プロキシを無効にするか、コンテキストを破棄する前にエンティティを手動で切り離すことです。これにはもう1つの欠点があります。
関連する問題
- 1. RazorのHtml.Raw()でObjectContextインスタンスが破棄されました
- 2. ObjectContextインスタンスが破棄されました。asyncメソッド、ToListAsync()、SqlQuery
- 3. モデルファイル内のオブジェクトが破棄された場合、そのオブジェクトは破棄されます
- 4. org.hibernate.PersistentObjectException:切り離されたエンティティは、私はテストのためにメモリデータベースにH2を使用しています
- 5. 更新切り離さエンティティ
- 6. 例外が発生した場合にSaveChangesが破棄されますか?
- 7. 含まれているフラグメントが破棄された場合、ViewPagerをプログラムで削除しますか?
- 8. グラフをObjectContextから切り離して別のオブジェクトに再結合することはできますか?
- 9. ObjectContextインスタンスが破棄され、接続が必要な操作には使用できなくなりました
- 10. NodeJS - イベントが受信された場合、約束を破棄します
- 11. 待つには、DbContextを配置している - のObjectContextインスタンスが破棄されている
- 12. コードで使用されていない場合、コンパイラはクラスの実装を破棄しますか?
- 13. ネストされたリソースが依存破壊で適切に破棄されない
- 14. CryptoStreamを破棄して、元のストリームを破棄しますか?
- 15. タグが付いたフラグメントを追加すると、親が破棄されても破棄されませんか?
- 16. コンテンツタイプが許可されていない場合、アップロードされたファイルを破棄する方法は?
- 17. エラー:ObjectContextインスタンスが破棄され、接続が必要な操作に使用できなくなりました
- 18. スレッドが破棄されると、変数は破棄されますか?
- 19. 終了したセッションは破棄されていません
- 20. System.ObjectDisposedException:破棄されたオブジェクト私は、次のGenericRepositoryを持って
- 21. System.ObjectDisposedException: 'ObjectContextインスタンスが破棄されたため、接続が必要な操作にObjectContextインスタンスを使用できなくなりました。
- 22. ユーザーコントロールは破棄されていない
- 23. Androidサービスは、ユーザーがアプリを離れる場合でもタイマーを実行します(破棄)
- 24. DbContextが破棄されました
- 25. org.eclipse.gemini.blueprint.service.importer.ServiceProxyDestroyedException:サービスプロキシが破棄されました
- 26. は、私は何も配置されていないにもかかわらず、ObjectContextはインスタンスが破棄されているそうだ
- 27. angular2破壊されたサブスクリプションの破棄
- 28. Springデータリポジトリ(Spring 4)を使用している場合、永続コンテキストからエンティティを切り離す方法
- 29. Logstash - > Elasticsearch:新しい文書の場合は@timestampを更新し、古い場合は破棄します。
- 30. リンクされたクラスを結合して切り離す良い方法はありますか?
http://stackoverflow.com/questions/2244843/entity-framework-detaching-entities-when-objectcontext-disposedデタッチする必要があると示唆していますか?それは正しいのですか? – glosrob