MS SQL データベース テーブルには、行の更新後に値が変化するタイムスタンプフィールドがあります。更新する前に、行が別のサービスから変更されているかどうかを確認したい。
メモリ内のオブジェクトのタイムスタンプ値とデータベース テーブルの値を比較することで、これを行うことができます。
1 つのアトミック操作でlinq2dbで実行できますか?
チェックせずに動作します:
db.Update(product);
次の 3 つのクエリは機能しません。
db.Products.Where(p => p.timestamp == product.timestamp).Update(p => p, product);
db.Products.Update(p => p.timestamp == product.timestamp, p => product );
db.Where<DB, Product, DB>(p => p.timestamp == product.timestamp).Update(product);
次のようにSQLスクリプトを実行したい:
update Products
set ...-- all fields
where Id = @id and Timestamp = @timestamp