Свободный NHibernate Newbie: строка была обновлена ​​или удалена другой транзакцией - PullRequest
1 голос
/ 10 апреля 2011

Я на начальной стадии создания базы данных с помощью Fluent NHibernate.Я реализовал шаблон единиц работы в ASP.NET MVC 3, чтобы позволить NHibernate обновить схему моей базы данных для меня.Чтобы вставить / обновить мои исходные данные, у меня есть контроллер Database с действием Update, который пытается SaveOrUpdate(...) объект User (пользователь-администратор) в таблицу Users.

После удаления всех пользовательских записей вручную через Visual Studio и повторного выполнения моего действия Update для повторного заполнения таблицы Users я получаю следующее исключение NHibernate.StaleObjectStateException:

Row was updated or deleted by another transaction (or unsaved-value mapping was
incorrect): [Invoicer.Data.Entities.User#3105248d-ca91-4c64-bf8f-9ebb017943b7]

Line 26:        {
Line 27:            if (_transaction.IsActive)
Line 28:                _transaction.Commit();
Line 29:        }

Примечание: сохранено или обновленоидентификатор пользователя - это Guid со значением выше (3105 ...).

Что я делаю не так?

Ответы [ 2 ]

12 голосов
/ 10 апреля 2011

Решено с отображением

NHibernate назначал мне идентификаторы пользователей (Guid), используя метод гребня Guid.Ручное указание идентификатора приводило к отключению отображения.Я предпочитаю назначать эти идентификаторы самостоятельно, поэтому я изменил сопоставление идентификатора сущности User, чтобы назначать его вручную в своем классе UserMap:

Id(x => x.Id).GeneratedBy.Assigned();
0 голосов
/ 02 декабря 2015

Эта ошибка также возникает, когда изменился контекст и вы, если ваш ПК является символом.

Решение - применить Trim () в PK, когда Update(data, data.code.Trim());

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