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

本文关键字:ID 服务器 部署 NHibernate | 更新日期: 2023-09-27 18:25:19

我使用此代码生成我的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生成方法。

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

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