特定のフィールドを除外するのではなく、ステートメントにoptimistic concurrency
必要なものがあります。UPDATE
つまり、テーブルを更新するときに、行のフィールドの値が実際に最後に実行されたときの値であることを保証するWHERE
句がステートメントに追加されます。UPDATE
SELECT
A
したがって、あなたの例で、いくつかのデータと値を選択しB
た1
と仮定しましょう2
。ここで、更新したいとしましょうB
(以下のステートメントは単なる例です)。
UPDATE TestClass SET B = '3' WHERE Id = 1;
ただし、そのステートメントを実行する代わりに (同時実行性がないため)、次のステートメントを実行してみましょう。
UPDATE TestClass SET B = '3' WHERE Id = 1 AND A = '1' AND B = '2';
そのステートメントにより、レコードが誰にも変更されていないことが保証されます。
ただし、現時点では、Subsonic の SimpleRepository があらゆるタイプの同時実行をサポートしているようには見えないため、これは大きな失敗になるでしょう。POCO を使用できる非常に単純なリポジトリ ライブラリを探している場合は、Dapper をお勧めします。実際、Dapper は Stackoverflow で使用されています。パラメータ化された SQL ステートメントを単純に送信するため、非常に高速であり、更新ステートメントに並行性を簡単に組み込むことができます。
- このStackoverflow 記事は、すべての CRUD 操作に Dapper を使用する方法に関する全体的な記事です。
- このStackoverflow の記事では、Dapper を使用して挿入と更新を実行する方法を示しています。
注: Dapper を使用すると、基本的な SQL ステートメントを送信するため、実際にやりたいことも実行できますが、同時実行を使用しないことはお勧めしません。