MS SQL 数据库表有时间戳字段,其值在更新行后发生变化。在更新之前,我想检查该行是否从另一个服务更改。
我可以通过将内存中对象的时间戳值与数据库表中的值进行比较来做到这一点。
我可以通过linq2db在一个原子操作中完成吗?
它无需检查即可工作:
db.Update(product);
这三个查询不起作用:
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