У меня есть прослушиватели с предварительной вставкой и обновлением, основанные на этом посте Ayende , которые работали до сих пор. Я только что преобразовал внутреннюю часть своего приложения из веб-API WCF в веб-API ASP.NET, и у меня возникла проблема.
(Я упоминаю только преобразование, поскольку оно изменилось только потому, что все работало правильно.)
Я могу вставлять сущности без проблем и обновлять существующие сущности без проблем. Тем не менее, в случае добавления сущности таким способом, который приводит к вставке SQL с последующим обновлением SQL, аудит завершается неудачей.
Проверка @event.State
в методе OnPreUpdate
показывает дату CreatedOn
как DateTime.MinValue
, даже после того, как она была правильно установлена в методе OnPreInsert
.
Я предполагаю, что @event.State
для операторов вставки и обновления SQL создается до вызова слушателей, и хотя обновленное состояние объекта доступно в методе OnPreUpdate
, @event.State
являются двумя разными вещи.
Мой текущий обходной путь - сброс CreatedOn
в методе OnPreUpdate
с использованием данных создания в сущности, но это не так.
Кто-нибудь еще испытывал это? Это ошибка в NHibernate или ожидаемое поведение?