0

デタッチされたエンティティまたは DTO を使用する 3 層アプリケーション (WCF + LinqToSql または EF) でデータ同時実行の問題を処理するための最良の方法は何ですか?

ありがとう。

4

3 に答える 3

1

WCFを使用してすべての値を渡していない場合は、タイムスタンプ(rowversion)フィールドをテーブルに導入できます。この値は、エンティティとDTOのプロパティとして含まれます。LINQ to SQLを使用すると、最適な同時実行性チェックを使用するオプションがあり、すべての値を比較する代わりに、新しいタイムスタンププロパティを指定できます。

于 2009-11-29T23:38:33.133 に答える
0

これは、Column属性のUpdateCheckプロパティを使用してLINQtoSQLおよびEFに組み込まれています。私の選択肢は、MS SQL SERVERを使用したいだけで、複雑な日付ベースからエンティティへのマッピングを必要としない限り、分離されたPOCOエンティティを使用してLINQtoSQLを使用することです。

この場合、各テーブルで単一の同時実行フィールドを使用し、そのフィールドに対してのみ同時実行チェックを実行します。整数フィールドは問題なく、更新のたびにインクリメントするだけです。

LINQ to SQLを使用した同時実行制御については、ここを参照してください。

LINQtoSQLとの並行性

これも便利だと思いました:

LINQtoSQLオプティミスティック同時実行制御の概要

PSこれはすべて、楽観的同時実行制御を使用してソリューションが正常に機能することを前提としています。データが大幅に変化する高負荷サーバーを使用している場合は、より悲観的な同時実行ソリューションが必要になる場合があります。

于 2009-11-29T23:32:52.073 に答える
0

変更されたすべての値を where 句に含めます。行が更新されていない場合は、データが古くなっていることがわかり、その時点でユーザーに通知して、実行するアクションを尋ねることができます。

于 2009-11-29T23:22:35.010 に答える