我正在使用此代码生成我的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生成方法。
答案 0 :(得分:2)
当多个进程同时保存实体时,存在阻止使用增量生成器的缺点。您可以使用HiLo发生器作为替代品。