私はLINQ to SQLを使用しており、ビューカウンタの相互接続を増やす問題が少しあります。LinqのSql非同期更新へのChangeConflictException
私が使用しているコードのちょっぴりです:私のテストで今
t = this.AppManager.ForumManager.GetThread(id);
t.Views = t.Views + 1;
this.AppManager.DB.SubmitChanges();
、私は非同時に、この複数回実行しています。このテストを実行しているオブジェクトの合計4つのコピーがあります。
つまり、ロックの問題などはありませんが、4つのデータコンテキストがあります。
これは、次のように動作すると思います。行をフェッチし、フィールドを変更し、行を更新します。しかし、これはChangeConflictExceptionをスローしています。
これのコピーが同時に実行されていないと、変更が矛盾するのはなぜですか?
特定のテーブルで変更の競合を無視する方法はありますか?
EDIT:答えが見つかりました:
あなたはアップデートの最後のイン・勝利のスタイルを作成するには、テーブル上のすべてのカラムに「UpdateCheck =決して」を設定することができます。これはLINQに移植する前にアプリケーションが使用していたものなので、ここでこれを使用します。
EDIT2:上記の私の修正が実際にスローされることから例外を防ぐためでしたが、それは根本的な問題を解決しませんでした:私は1つのデータコンテキスト以上のものを持っているので
、複数のキャッシュされているが終わります各オブジェクトのコピー。すべてのページの読み込み時にデータコンテキストを再作成する必要がありますか?
私はむしろすべてを忘れるようにデータコンテキストに指示します。これは可能ですか?