NHibernate在多个服务器上部署时会生成重复的ID值

时间:2012-02-22 09:48:52

标签: c# nhibernate fluent-nhibernate

我正在使用此代码生成我的ID

Id(x => x.Id).GeneratedBy.Increment();

这已经很好地工作了很长时间,但是由于移动到不同的服务器并且在成功添加了许多记录之后,它现在在尝试插入新记录时抛出以下错误

Violation of PRIMARY KEY constraint 'PK_TableName'. 
Cannot insert duplicate key in object 'TableName'.
The statement has been terminated

这是新记录的保存方式

using (var transaction = _session.BeginTransaction())
{                
    _session.SaveOrUpdate(item);
    transaction.Commit();
}

知道可能导致问题的原因或更好的方法我应该这样做吗?

编辑:我刚刚发现这个代码现在在多个服务器上运行,所以我想我必须更改Id生成方法。

1 个答案:

答案 0 :(得分:2)

当多个进程同时保存实体时,存在阻止使用增量生成器的缺点。您可以使用HiLo发生器作为替代品。