1

我有一個包含Version數字列的Posts表,以跟蹤每條記錄的第n個修訂版。每次更新一行時,我都希望它的Version數字增加。使用NHibernate更新整數列的併發增量

目前,我正在遞增我的應用程序邏輯中的列,但由於post.Version += 1;不等於UPDATE Posts SET Version = Version + 1...,所以我擔心兩個併發更新只會導致一個版本增量。

解決這個問題很簡單,使用手動SQL表達式(如上所述)或更新觸發器,但我寧願讓流利NHibernate照顧我,如果可能的話。

使用事務進行更新不會阻止兩個同時讀取兩個都看到版本「7」,並且都決定下一個值應該是8.因此,版本7的兩個更新可能會導致值爲8,而不是9.

如何設計或映射併發安全的自動遞增整數列?

+0

也許這個話題也值得一試,相關:HTTP://計算器。 com/questions/18362228 /如何鎖定對象之前更新使用nhibernate鎖定模式 – Piedone 2014-03-30 18:34:20

回答

4

它已經被納入NHibernate。檢查<version>標記和樂觀併發控制上的NH文檔。

+0

+1謝謝!我發現了'Version(x => x.Version);'在Fluent NHibernate中的映射:) – 2011-04-24 19:50:05

+0

打我幾秒鐘:-) – 2011-04-24 19:51:28