Nhibernate插入时应在添加事件监听器后更新

时间:2010-01-07 18:13:55

标签: nhibernate fluent-nhibernate

我有一个自定义EventListener连接到侦听SaveOrUpdates,现在每当我在我的对象上调用Session.SaveOrUpdate时它会在它应该更新时插入。

这是我的事件监听器:

public class CustomSaveEventListener : DefaultSaveEventListener
{

    protected override object PerformSaveOrUpdate(SaveOrUpdateEvent @event)
    {
        return base.PerformSaveOrUpdate(@event);
    }

}

以下是如何配置(流利):

 SessionFactory = Fluently.Configure()
              .Database(MsSqlConfiguration.MsSql2005.ConnectionString(c => c.Is(connString)).ShowSql().DoNot.UseReflectionOptimizer)
              .Mappings(m => m.FluentMappings.AddFromAssemblyOf<INC_IncidentMap>())
              .ExposeConfiguration(c => c.EventListeners.SaveOrUpdateEventListeners = new ISaveOrUpdateEventListener[] { new CustomSaveEventListener() })
              .BuildConfiguration().BuildSessionFactory();

我需要事件监听器的原因是因为我需要对持久存在的任何/每个实体执行审计跟踪。

有没有人遇到过这个问题?任何见解将不胜感激。

1 个答案:

答案 0 :(得分:5)

您的问题是,您将DefaultSaveOrUpdateEventListener替换为DefaultSaveEventListener派生的{{1}},因此将每次更新视为保存。