Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate在多台服务器上部署时生成重复的ID值_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

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

C# NHibernate在多台服务器上部署时生成重复的ID值,c#,nhibernate,fluent-nhibernate,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

我用这个代码生成我的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生成器作为替换。

是否有多个进程同时写入?@FelicePollano它现在已部署到多个负载平衡服务器,因此这可能是问题所在。@RichardD是否需要使用以这种方式创建的Id?你考虑过使用Guid Comb吗?@RichardD你必须改变策略,也许HiLo会在你的情况下这样做…@FelicePollano将此作为回答,我会接受。