Nhibernate侦听器无法正常工作

时间:2010-01-26 13:25:23

标签: nhibernate listeners

我正在使用NHibernate(v 2.1.0.4000)并尝试使用事件监听器进行更新操作。

我使用以下代码为Nhibernate配置添加一个监听器。

var configuration = new Configuration();    
configuration.SetListener(ListenerType.Update, new UpdateListener());  
_sessionFactory = configuration.BuildSessionFactory();

当我更新两个项目时,第一个项目没有进入监听器的“PerformUpdate”功能。但是,在更新第二个项目时,正在调用该函数。

这怎么可能发生?

--- ---编辑的

调试时我发现在Listener的“OnSaveOrUpdate”上,正在执行以下代码:

object obj4 = session.PersistenceContext.UnproxyAndReassociate(@event.Entity);
@event.Entity = obj4;
@event.Entry = session.PersistenceContext.GetEntry(obj4);

我预计@ event.Entry为null,但它不是null并且状态为Loaded。 调用GetEntry方法时应该发生什么?

1 个答案:

答案 0 :(得分:0)

你能为你的听众展示代码吗?您是否使用过分析器来确保为这两个项目发布更新?如果没有对项目进行任何更改,我可以看到这种情况发生,因此不会发布更新。

编辑添加:我认为您正在使用较旧的Listener实现。我建议使用new style(还有ISaveOrUpdateEventListener)。您是否正在实施审计功能?

我还建议您验证是否为第一个项目发布了更新。我知道你说你确定它已被改变了,但是你也应该检查NH是否认为它已被改变。在调试这样的事情时,消除明显的问题总是一个好主意。

相关问题