ISession.SaveOrUpdate () не запускает никаких событий в DefaultSaveOrUpdateEventListener - PullRequest
0 голосов
/ 12 января 2012

Я использую 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(), то ничего не сработает.

Что-нибудь не так, какой код выше?

1 Ответ

1 голос
/ 12 января 2012

Я нашел причину, по которой я совершил ошибку. Я зарегистрировал только nhConfig.EventListeners.SaveEventListeners событие, но забыл зарегистрировать nhConfig.EventListeners.SaveOrUpdateEventListeners событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...