У меня есть перехватчик NHibernate, который установлен в HibernateTemplate с помощью Spring.Net (я использую ASP.NET MVC, fwiw), который используется для аудита. Однако по какой-то причине, когда метод OnLoad запускается, когда я вызываю genericDAO.Get (id), когда я пытаюсь что-то сохранить с помощью genericDAO.SaveOrUpdate (object), не вызывается ни метод перехватчика OnSave, ни OnFlushDirty. Кто-нибудь знает, почему это может быть?
Я установил точки останова для методов в отладчике 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
}
}