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?
I found the reason, that I made s mistake. I only registered
nhConfig.EventListeners.SaveEventListenersevent but forget to registernhConfig.EventListeners.SaveOrUpdateEventListenersevent.