У меня есть перехватчик NHibernate, который установлен в HibernateTemplate с использованием Spring.Net (я использую ASP.NET MVC, fwiw), который используется для аудита. Однако по какой-то причине, когда метод OnLoad запускается при вызове genericDAO.Get (id), когда я пытаюсь что-то сохранить с помощью genericDAO.SaveOrUpdate (object), не вызывают методы OnSave или OnFlushDirty Interceptor. Кто-нибудь знает, почему это может быть?NHibernate Interceptor не используется при сохранении
Я установил точки останова для методов в отладчике VS, поэтому я вполне уверен, что Interceptor установлен и что я не пропускаю никаких вызовов методов. Очевидно, что все сохраняется и правильно получается.
public class AuditInterceptor
: EmptyInterceptor
{
public override bool OnLoad(object entity, object id, object[] state, string[] propertyNames, IType[] types)
{
// Implementation
// Called when using genericDAO.Get(id)
}
public override bool OnSave(Object entity, Object id, Object[] state,
String[] propertyNames, IType[] types)
{
// Implementation
// NOT called when using genericDAO.SaveOrUpdate(entity)
}
public override bool OnFlushDirty(Object entity, Object id,
Object[] currentState, Object[] previousState,
String[] propertyNames, IType[] types)
{
// Implementation
}
}
Не могли бы вы показать некоторые из ваших настроек? – BennyM
Я скопировал файл objects.xml ниже. Есть ли что-нибудь еще, что вы думаете, что это поможет увидеть? – LucyB