18

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

4

3 回答 3

22

NHibernate 支持 2 种类型的乐观并发。

您可以通过在映射文件中的“class”元素上使用“optimistic-lock=dirty”属性来检查脏字段,也可以使用“optimistic-lock=version”(这也是默认设置)。如果您使用的是版本,则需要在映射文件中提供一个“版本”元素,该元素映射到数据库中的字段。

版本可以是 Int64、Int32、Int16、Ticks、Timestamp 或 TimeSpan 类型,并在保存时自动递增。有关详细信息,请参阅NHibernate 文档中的第 5 章。

于 2008-09-23T01:08:19.850 回答
17

NHibernate 默认支持乐观并发。另一方面,悲观并发可以通过该ISession.Lock()方法来实现。

这些问题将在本文档中详细讨论。

于 2008-09-23T01:03:59.690 回答
2

您还可以“仅”手动比较版本号(假设您已将 Version 属性添加到您的实体)。

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

于 2008-10-15T08:28:54.007 回答