我有类似的东西
var productList = order.Products.TolIst();
我遍历 productList 并使用更新每个产品
session.SaveOrUpdate(product);
但问题是,产品在OnFlushDirty函数中的先前状态为 null(这是有道理的)。
无论如何管理/复制/注入以前的状态?
谢谢
我有类似的东西
var productList = order.Products.TolIst();
我遍历 productList 并使用更新每个产品
session.SaveOrUpdate(product);
但问题是,产品在OnFlushDirty函数中的先前状态为 null(这是有道理的)。
无论如何管理/复制/注入以前的状态?
谢谢
这可能与分离对象更新有关。尝试阅读这个非常相似的故事:http: //jamesfitzsimons.com/ ?p=152
问题总结:
...经过调查,我们意识到传递给我们拦截器的 onFlushDirty 方法的 previousState 参数为空。...
解决方案:
解决方案是使用 merge() 方法(NHibernate 2.0 中的新方法)。Merge() 检查一级缓存以查看具有给定标识符的对象是否先前已加载。如果是这样,它将从一级缓存中加载该对象并使用分离的对象更新它的属性。这意味着会话现在能够跟踪对对象所做的更改,因此当刷新发生时,previousState 不再为空。