hardywang
hardywang

Reputation: 5162

ISession.SaveOrUpdate() does not fire any event in DefaultSaveOrUpdateEventListener

I am using NH 3.2 and try to implement auto audit by creating my own class

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

And my code calls ISession.Save() then PerformSaveOrUpdate, EntityIsTransient and PerformSave are fired in sequence, which is good.

But if I call ISession.SaveOrUpdate() then nothing is fired.

Anything wrong which the code above?

Upvotes: 0

Views: 657

Answers (1)

hardywang
hardywang

Reputation: 5162

I found the reason, that I made s mistake. I only registered nhConfig.EventListeners.SaveEventListeners event but forget to register nhConfig.EventListeners.SaveOrUpdateEventListeners event.

Upvotes: 1

Related Questions