我有一个使用 Spring.Net 在 HibernateTemplate 中设置的 NHibernate 拦截器(我使用的是 ASP.NET MVC,fwiw),用于审计。但是,由于某种原因,当我调用 genericDAO.Get(id) 时触发 OnLoad 方法时,当我尝试使用 genericDAO.SaveOrUpdate(object) 保存某些内容时,不会调用 OnSave 或 OnFlushDirty 拦截器方法。有谁知道这可能是为什么?
我已经在 VS 调试器中的方法上设置了断点,所以我很确定拦截器已设置并且我没有错过任何方法调用。显然,一切都被正确保存和检索。
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
}
}