我们如何处理NHibernate中的并发性?
时间:2020-03-06 14:34:29 来源:igfitidea点击:
我们如何使用NHibernate支持乐观/悲观并发?
解决方案
默认情况下,NHibernate支持开放式并发。另一方面,悲观并发可以通过ISession.Lock()方法来完成。
这些问题将在本文档中详细讨论。
NHibernate支持2种类型的乐观并发。
我们可以通过在映射文件中的"类"元素上使用" optimistic-lock = dirty"属性来检查脏字段,也可以使用" optimistic-lock = version"(这也是默认设置)。如果使用的是版本,则需要在映射文件中提供一个"版本"元素,以映射到数据库中的字段。
版本的类型可以为Int64,Int32,Int16,Ticks,Timestamp或者TimeSpan,并在保存时自动递增。有关更多信息,请参见NHibernate文档中的第5章。
我们还可以"仅"手动比较版本号(假设我们已向实体添加Version属性)。
显然,乐观是唯一明智的选择。当然,有时候,我们不得不应对疯狂的情况...