我正在使用NHibernate(v 2.1.0.4000)并尝试使用事件侦听器进行更新操作。Nhibernate听众无法正常工作
我使用以下代码将监听器添加到Nhibernate配置中。
var configuration = new Configuration();
configuration.SetListener(ListenerType.Update, new UpdateListener());
_sessionFactory = configuration.BuildSessionFactory();
当我更新两个项目时,第一个项目没有进入侦听器的“PerformUpdate”函数。但是,更新第二项时,该函数正在被调用。
这是怎么发生的?
---编辑---
在调试,我发现,在听众的 “OnSaveOrUpdate”,正在执行以下代码:
object obj4 = session.PersistenceContext.UnproxyAndReassociate(@event.Entity);
@event.Entity = obj4;
@event.Entry = session.PersistenceContext.GetEntry(obj4);
我预计@event。 Entry为null,但它不为null并且状态为Loaded。 调用GetEntry方法时应该发生什么?
我在监听的唯一功能是: 保护覆盖无效PerformUpdate(SaveOrUpdateEvent @event,对象实体,IEntityPersister留存){ 了该功能没有被调用。我相信这两个对象都会改变。 – Jan 2010-01-26 14:00:00
我发现当我得到一个对象,进行更改并更新对象时,侦听器中的performUpdate函数永远不会被调用。 – Jan 2010-01-27 13:28:43