我有一个带有Version
数字列的帖子表,用于跟踪每条记录的第n个修订版本。每次更新一行时,我希望其Version
数字递增。
目前,我正在增加应用程序逻辑中的列,但由于post.Version += 1;
不等同于UPDATE Posts SET Version = Version + 1...
,我担心两个并发更新只会导致一个版本增量。
使用手动SQL表达式(如上所述)或更新触发器解决这个问题很容易,但如果可能的话,我宁愿让Fluent NHibernate为我解决这个问题。
使用事务进行更新不会阻止两个同时读取同时看到版本“7”,并且都决定下一个值应该是8.因此,对版本7的两次更新可能会导致值为8,而不是9。
如何设计或映射并发安全的自动递增整数列?
答案 0 :(得分:4)
它已经融入了NHibernate。检查<version>
标签和乐观并发控制上的NH文档。
答案 1 :(得分:1)
为什么要手动管理版本列?
使用NHibernate对乐观并发的支持(参见http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-version),你将免费获得(以及更正确的行为IMO)