我正在使用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()
然后PerformSaveOrUpdate
,EntityIsTransient
和PerformSave
按顺序触发,这很好。
但如果我打电话给ISession.SaveOrUpdate()
,那么什么都不会被解雇。
上面的代码有什么不对吗?
答案 0 :(得分:1)
我找到了原因,我犯了错误。我只注册了nhConfig.EventListeners.SaveEventListeners
个活动,但忘了注册nhConfig.EventListeners.SaveOrUpdateEventListeners
个活动。