Sql server 使用NHibernate更新时并发递增整数列

Sql server 使用NHibernate更新时并发递增整数列,sql-server,fluent-nhibernate,concurrency,auto-increment,increment,Sql Server,Fluent Nhibernate,Concurrency,Auto Increment,Increment,我有一个Posts表,其中有一个Versionnumber列,用于跟踪每条记录的第n次修订。每次更新一行时,我都希望它的版本编号递增 目前,我正在增加应用程序逻辑中的列,但是因为post.Version+=1并不等同于UPDATE Posts SET Version=Version+1…,我担心两次并发更新只会导致一次版本增量 使用手动SQL表达式(如上所述)或更新触发器很容易解决这个问题,但如果可能的话,我宁愿让Fluent NHibernate帮我解决这个问题 使用事务进行更新不会阻止两次同

我有一个Posts表,其中有一个
Version
number列,用于跟踪每条记录的第n次修订。每次更新一行时,我都希望它的
版本
编号递增

目前,我正在增加应用程序逻辑中的列,但是因为
post.Version+=1
并不等同于
UPDATE Posts SET Version=Version+1…
,我担心两次并发更新只会导致一次版本增量

使用手动SQL表达式(如上所述)或更新触发器很容易解决这个问题,但如果可能的话,我宁愿让Fluent NHibernate帮我解决这个问题

使用事务进行更新不会阻止两次同时读取,这两次读取都会看到版本“7”,并且都会决定下一个值应该是8。因此,对版本7的两次更新可能会导致值为8,而不是9


如何设计或映射一个并发安全的自动递增整数列?

它已经烘焙到NHibernate中。检查
标签和乐观并发控制上的NH文档。

它已经烘焙到NHibernate中。在标签和乐观并发控制上检查NH文档。

为什么要手动管理版本列


使用NHibernate对乐观并发性的支持(请参阅),您将免费获得该支持(以及更正确的行为)

为什么要手动管理版本列


使用NHibernate对乐观并发的支持(请参阅),您将免费获得它(以及更正确的行为)

+1谢谢!我找到了
版本(x=>x.Version)用流利的NHibernate进行映射:)比我快了几秒钟:-)+1谢谢!我找到了
版本(x=>x.Version)流畅的NHibernate中的映射:)比我快了几秒钟:-)谢谢(我是NHibernate的新手)。我不知道我是怎么用LINQ来SQL的?!谢谢(我是NHibernate的新手)。我不知道我是怎么用LINQ来SQL的?!也许这个话题也值得一查,相关的:也许这个话题也值得一查,相关的: