NHibernate检查实体是否存在的线程安全方式

时间:2013-04-14 21:25:19

标签: nhibernate

我一直在试着应该是一个简单的问题。我正在尝试进行以下基本操作

1)检查实体是否存在于ID

以外的字段

2)如果没有,请创建实体

问题是这是一个多线程的控制台应用程序,所以我需要以某种方式通过ID以外的字段获取实体并将LockMode设置为Upgrade(或者至少我认为需要做什么)。从我看来,ISession无法做到这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在单个进程中使用全局锁定对象

lock(existsLocker)
{
    var entity = session.Query<Entity>().Where(...).FirstOrDefault();
    if (entity == null)
    {
       entity = new Entity();
       session.Save(entity);
       session.Flush();
    }
}