Я использую перехватчики NHibernate для регистрации информации об обновлениях / вставках / удалениях для различных объектов.
В регистрируемую информацию включаются тип объекта и уникальный идентификатор измененного объекта. Уникальный идентификатор отмечен как <generator class="identity">
в файле сопоставления NHibernate.
Очевидная проблема заключается в том, что при регистрации операции Insert с использованием IInterceptor.OnSave () идентификатор объекта еще не назначен.
Как я могу получить идентификатор добавленной сущности перед регистрацией информации аудита?
(Я просмотрел событие NHibernate Listeners PostSave, но не могу заставить их работать с используемой конфигурацией Spring.net, поэтому я хотел бы придерживаться перехватчиков, если это вообще возможно)
Код:
// object id parameter is null...
public override bool OnSave(object entity, object id, object[] state,
string[] propertyNames, IType[] types)
{
AddAuditItem(entity, INSERT);
return false;
}