ISession.SaveOrUpdate()不会触发DefaultSaveOrUpdateEventListener中的任何事件

时间:2012-01-11 21:43:54

标签: nhibernate

我正在使用NH 3.2并尝试通过创建我自己的类

来实现自动审核
Public Class AuditEventListener
    Inherits DefaultSaveOrUpdateEventListener

    Protected Overrides Function PerformSave(entity As Object, id As Object, persister As IEntityPersister, _
                                             useIdentityColumn As Boolean, anything As Object, source As IEventSource, _
                                             requiresImmediateIdAccess As Boolean) As Object

        Return MyBase.PerformSave(entity, id, persister, useIdentityColumn, anything, source, requiresImmediateIdAccess)
    End Function

    Protected Overrides Function PerformSaveOrUpdate([event] As SaveOrUpdateEvent) As Object
        Return MyBase.PerformSaveOrUpdate([event])
    End Function

    Protected Overrides Sub PerformUpdate([event] As NHibernate.Event.SaveOrUpdateEvent, entity As Object, persister As NHibernate.Persister.Entity.IEntityPersister)
        MyBase.PerformUpdate([event], entity, persister)
    End Sub

    Protected Overrides Function EntityIsPersistent([event] As NHibernate.Event.SaveOrUpdateEvent) As Object
        Return MyBase.EntityIsPersistent([event])
    End Function

    Protected Overrides Function EntityIsTransient([event] As NHibernate.Event.SaveOrUpdateEvent) As Object
        Return MyBase.EntityIsTransient([event])
    End Function
End Class

我的代码调用ISession.Save()然后PerformSaveOrUpdateEntityIsTransientPerformSave按顺序触发,这很好。

但如果我打电话给ISession.SaveOrUpdate(),那么什么都不会被解雇。

上面的代码有什么不对吗?

1 个答案:

答案 0 :(得分:1)

我找到了原因,我犯了错误。我只注册了nhConfig.EventListeners.SaveEventListeners个活动,但忘了注册nhConfig.EventListeners.SaveOrUpdateEventListeners个活动。

相关问题