NHibernate通知其他会话有关更改

时间:2010-08-17 11:12:31

标签: wpf nhibernate lazy-loading

我的应用程序包含两个视图,列表和详细信息。

每个视图实例都有自己的NHibernate会话。

当用户从详细视图中保存实体时,事件将发布到列表视图(实体ID)之后,列表视图使用它自己的会话重新获取已修改的实体。

为了让列表视图的会话获得修改后的实体的新版本,我调用了Session.Clear()方法并且它工作正常,但后来我开始得到:

Initializing[Core.Domain.Order#0001730]-failed to lazily initialize a collection of role: Core.Domain.Cable.OrderItems, no session or session was closed

“同步”会话和避免延迟加载异常的正确方法是什么?

谢谢

2 个答案:

答案 0 :(得分:1)

Session.Refresh(object);

您可能需要致电

Session.Evict(object);

然后

Session.Refresh(object); 

在一些多对一的情况下。

答案 1 :(得分:0)

不要使用长时间运行的会话。它们不是为了同步而设计的(这就是你使用数据库的原因吗?)。 Session.Clear()只应在特殊情况下使用。