Я использую перехватчики NHibernate для регистрации информации об обновлениях / вставках / удалениях для моих различных объектов.
В зарегистрированную информацию включены тип объекта и уникальный идентификатор измененного объекта. Уникальный идентификатор помечен как <generator class="identity">
в файле сопоставления NHibernate.
Очевидная проблема заключается в регистрации операции вставки с использованием IInterceptor.OnSave (). Идентификатор объекта еще не был назначен.
Как я могу получить идентификатор вставленной сущности перед регистрацией информации аудита?
(Я посмотрел на событие NHSBNERNATE 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;
}