你如何处理NHibernate中的并发?

时间:2008-09-23 01:00:07

标签: nhibernate

如何使用NHibernate支持乐观/悲观并发?

3 个答案:

答案 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)

您也可以“只是”手动比较版本号(假设您已向您的实体添加了版本属性)。

显然,乐观是唯一理智的选择。当然,有时我们必须处理疯狂的情景......