NHibernate: сохранение останавливается при достижении уникального ограничения - PullRequest
0 голосов
/ 26 ноября 2010

Я бы хотел сохранить список магазинов в базе данных с помощью NHibernate.Однако для каждого хранилища существует уникальное ограничение, в результате чего сохранение останавливается, когда хранилище запускает ограничение.

try
{
    _storeRepository.Save(stores);
}
catch (Exception e)
{
}
finally
{
    session.Commit();
}

В соответствии с приведенным выше кодом все хранилища до того, как будет применено уникальное ограничение, сохраняются., но не те, что после.Как я могу это исправить без необходимости зацикливать весь список и проверять наличие дубликатов?

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Правила таковы:

  • Никогда catch sql (или NH) Исключения в транзакции.
  • в случае ошибки всегда откат ко всему материалу
  • в случае ошибки всегда уничтожить сеанс.

Не удалось синхронизировать кэш сеанса NH, и вы больше не можете его использовать.Так что «наконец-то зафиксировать» - очень плохая вещь.

Вам необходимо убедиться, что вы не нарушаете никаких ограничений базы данных в своей бизнес-логике.

0 голосов
/ 26 ноября 2010

Вы всегда можете использовать SaveOrUpdate, поэтому NHibernate обновляет сущность, если в базе данных найдена сущность с данной сущностью.

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