nhibernate如何使用ver列处理幕后更新冲突?

时间:2011-09-13 15:09:28

标签: c# hibernate nhibernate

我只是在寻找一些关于hibernate如何使用ver列处理冲突的文档。

到目前为止的理解: 更改为行意味着已更改的行插入新版本号

- 这是通过“select max(ver)+1”完成的吗? -

随后删除之前的版本。

顺便问一下:我们怎么知道{“select max(ver)+1”; insert}将保证是原子操作吗?他们先锁定行吗?

提前感谢任何信息。我只是想弄清楚。

2 个答案:

答案 0 :(得分:2)

我会在这里扩展一点。 hibernate为更新执行的操作类似于

UPDATE table SET string = 'string', number = 1, version = version+1 
WHERE id = %Id% AND version = %Version%

这意味着只有当版本仍然与从数据库加载对象/行并在同一查询中更新版本号时,更新才会成功。

答案 1 :(得分:1)