NHibernate генерирует дубликаты значений ID при развертывании на нескольких серверах - PullRequest
0 голосов
/ 22 февраля 2012

Я использую этот код для генерации моих идентификаторов

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();
}

Есть идеи, что может быть причиной проблемы, или лучший способ, которым я должен это делать?

Редактировать: Я только что узнал, что этот код теперь работает на нескольких серверах, поэтому я думаю, что мне придется изменить метод генерации идентификатора.

1 Ответ

2 голосов
/ 22 февраля 2012

Есть недостаток, который не позволяет использовать генератор приращений, когда несколько процессов одновременно сохраняют сущности.Вы можете использовать генератор HiLo в качестве замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...