如何使用NHibernate支持乐观/悲观并发?
答案 0 :(得分:22)
NHibernate支持两种类型的乐观并发。
您可以通过在映射文件中的“class”元素上使用“optimistic-lock = dirty”属性来检查脏字段,也可以使用“optimistic-lock = version”(这也是默认值)。如果您使用的是版本,则需要在映射文件中提供映射到数据库中字段的“version”元素。
版本可以是Int64,Int32,Int16,Ticks,Timestamp或TimeSpan类型,并在保存时自动递增。有关详细信息,请参阅NHibernate文档中的Chapter 5。
答案 1 :(得分:16)
默认情况下,NHibernate支持乐观并发。另一方面,悲观并发可以通过ISession.Lock()
方法完成。
this document中详细讨论了这些问题。
答案 2 :(得分:2)
您也可以“只是”手动比较版本号(假设您已向您的实体添加了版本属性)。
显然,乐观是唯一理智的选择。当然,有时我们必须处理疯狂的情景......