WPF中的Nhibernate-一个会话和错误

WPF中的Nhibernate-一个会话和错误,wpf,nhibernate,session,Wpf,Nhibernate,Session,我们有一个包含导航栏的应用程序,其中包含客户列表和客户的票证列表 选择左侧列表中的客户时-在右侧列表中加载票据。 NHibernate会话在主窗口启动时打开。在ViewModel中为BackgroundWorker的每个客户加载票据。 现在名单上大约有5000名顾客。当我快速选择一个客户,然后选择下一个客户时——如果第一个客户的票证列表还没有加载——我从nhibernate得到错误信息。错误不同:flush处理了两次集合,找到了对集合的共享引用,并且未在网格中加载票证列表。 我们不希望在主UI

我们有一个包含导航栏的应用程序,其中包含客户列表和客户的票证列表

选择左侧列表中的客户时-在右侧列表中加载票据。 NHibernate会话在主窗口启动时打开。在ViewModel中为BackgroundWorker的每个客户加载票据。 现在名单上大约有5000名顾客。当我快速选择一个客户,然后选择下一个客户时——如果第一个客户的票证列表还没有加载——我从nhibernate得到错误信息。错误不同:flush处理了两次集合,找到了对集合的共享引用,并且未在网格中加载票证列表。
我们不希望在主UI线程中加载票证,因为冻结UI和票证可能会非常重要。在我们的应用程序中如何正确使用NHibernate会话

我会按照描述的那样做

在backgroundthread中打开一个无状态会话以加载maingrid的数据,并为每个子窗口打开一个新会话,并使用changetracking加载所选项目