Nhibernate ISession.SaveOrUpdate()不会在DefaultSaveOrUpdateEventListener中触发任何事件
我正在使用NH3.2,并试图通过创建自己的类来实现自动审计Nhibernate ISession.SaveOrUpdate()不会在DefaultSaveOrUpdateEventListener中触发任何事件,nhibernate,Nhibernate,我正在使用NH3.2,并试图通过创建自己的类来实现自动审计 Public Class AuditEventListener Inherits DefaultSaveOrUpdateEventListener Protected Overrides Function PerformSave(entity As Object, id As Object, persister As IEntityPersister, _
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()
然后依次触发PerformSave或update
,EntityIsTransient
和PerformSave
,这很好
但是如果我调用ISession.SaveOrUpdate()
,则不会触发任何操作
上面的代码有什么问题吗?我找到了我犯了s错误的原因。我只注册了
nhConfig.EventListeners.SaveEventListeners
事件,但忘记注册nhConfig.EventListeners.SaveOrUpdateEventListeners
事件。这可能是个愚蠢的问题,但在创建会话工厂时,您是否将事件侦听器添加到正确的事件侦听器集合中?我有Dim配置作为FluentConfiguration=fluent.Configure()…
然后Dim nhConfig=config.BuildConfiguration()
然后nhConfig.EventListeners.SaveEventListeners=New ISaveOrUpdateEventListener(){New AuditEventListener()}
。我想我应该有正确的事件记录。