可能な参考文献データ - EntityFramework - SQLのデータベース接続は、私は同様の問題を発見した「リフレッシュ」
ない:Refreshing a SQL database connection解決策を示唆していない(多くのコードをチェックするために)
私の問題に近いはずのLINQ to SQL does not update when data has changed in databaseです。
私は、ユーザーが(SqlConnectionStringBuilder、EntityConnectionStringBuilderと "新EntityClient.EntityConnection(entityconn())" を介して)実行時にたconnectionStringを変更することができるようにセットアップ
私は.OpenとしてとEntityConnectionを使用します」新しいDatabase.DatabaseContainer(entityConnection) "
私は同じコンテナを使用してdbデータを読み込みます。 ".SaveChanges"を呼び出してこれまでのトランザクションを明示的に使用しないでください。 (キャッシュされたデータをコミットする前に変更された場合、私は自動的にコミットし、例外をスロー行うための「SaveChangesメソッドを」期待)
問題の説明
私は2つのプログラムを実行し、1つの、プログラム、相互にデータを変更他のプログラムがコミットする前に接続を確立したときに変更が通知されません。
たとえば、同じプログラム(AとB)を2回使用した場合、次のようになります。 Aを開始し、Bを開始し、A、Bのデータを変更できませんでしたAが変更を完了する前に)。ローカルにキャッシュされたデータをリフレッシュする方法、およびレースの問題に対処する方法を
質問
?
Aの接続をリフレッシュしてデータを変更すると、Bがリフレッシュされ、データの変更が開始されると、Bは気付かずにAの変更を上書きします。これは、更新後にデータベースが変更されるたびに発生します。上記の2番目の質問は、その問題に対処していないようです。
私はそれを助けることが問題
たぶんコマンド「Container.Refresh(Objects.RefreshMode.StoreWins、エンティティ)を解決することがありますが、私はどのようなオブジェクトわからないどのように私の推測アイデア
キャッシュされたデータベースから読み込んだ旧式のものを提供することができますか?そして、その競合がいつ発生するかはわかりません。おそらくトランザクションや変更するトランザクションスコープ、トランザクションが開始されてからデータベースに変更がない限り、すべての変更が行われる(または繰り返し試みられる)ことを保証しますか?posですか?アクティブなトランザクションを持つ別のプログラムによって既に変更されたデータを処理する方法はありますか?
クイックアンサーに感謝します。今私は私が何を読んでいるかを知っています – Amegon
あなたがリンクしているとき、私は並行性に関する記事を読んで、http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/07/02/10564へのリンクに続きました。 aspxと私のEFモデルで適用されたプロパティ同時性モード=私のタイムスタンプ変数(ほとんどのテーブルで使用される複合型の1つの変数)に固定。 その直後に、以前の「キャッシュされた」データしか持たなかった古い接続であっても、常に最新のタイムスタンプを受信します。私はこれらの問題に対して簡単な解決策があることをとても嬉しく思います。 – Amegon