2010-12-28 3 views
0

私はエンティティフレームワークのコンテキストに関する疑問を持っています:EntityManagersの1つが変更を更新または保存したときに、どのデータがEntityManagersのグループを参照していますか?

3つのコンテキストd1、d2、d3があるとします。すべてのコンテキストは、アプリケーションの実行速度(d3、d2の後、d2の後、d1の後)で異なる時点でインスタンス化されています。アプリケーションロジックがd2によって管理されるいくつかのエンティティを変更し、d2.SaveChanges()(または更新または作成を意味する操作)を実行すると、d2.SaveChanges()の実行後にd3およびd1によって変更が見られますか?

回答をサポートする参考文献を提供してもらえますか?

答えて

1

これらは、日付ストアから更新した後にのみ表示されます。 d2の変更は他のコンテキストに影響しません。 d1とd3には、d2の変更が行われる前に、データベースから取得した状態のデータが含まれています。最新の状態にしたい場合は、自分でデータを更新する必要があります。これが自動的に行われた場合、あまり効率的ではありません。それが文脈の人生が短くなければならない理由でもあります。長すぎると、期限切れのエンティティが含まれます。

+0

参考文献やリンクを教えてください。 – JPCF

+0

コンテキストは何らかのトランザクションのように機能しますか? – JPCF

+0

http://msdn.microsoft.com/en-us/library/bb738470.aspx - すべてのObjectContextにはObjectStateManagerがあり、データベースから取得したエンティティのローカルコピーを保持します。 d1コンテキストでエンティティを変更した場合、d2のObjectStateManagerは変更されず、同じ値を保持します。もちろん、これはd2が変更前にd1によって変更されたデータを検索した場合にのみ発生します。 – LukLed

関連する問題