2

我有类似的东西

var productList = order.Products.TolIst();

我遍历 productList 并使用更新每个产品

session.SaveOrUpdate(product);

但问题是,产品在OnFlushDirty函数中的先前状态为 null(这是有道理的)。

无论如何管理/复制/注入以前的状态?

谢谢

4

1 回答 1

2

这可能与分离对象更新有关。尝试阅读这个非常相似的故事:http: //jamesfitzsimons.com/ ?p=152

问题总结:

...经过调查,我们意识到传递给我们拦截器的 onFlushDirty 方法的 previousState 参数为空。...

解决方案:

解决方案是使用 merge() 方法(NHibernate 2.0 中的新方法)。Merge() 检查一级缓存以查看具有给定标识符的对象是否先前已加载。如果是这样,它将从一级缓存中加载该对象并使用分离的对象更新它的属性。这意味着会话现在能够跟踪对对象所做的更改,因此当刷新发生时,previousState 不再为空。

于 2013-01-31T11:33:25.363 回答