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生成方法。
当多个进程同时保存实体时,有一个缺点阻止使用增量生成器。您可以使用HiLo发生器作为替代品。