我们的应用程序包含列表客户的导航栏和客户的列表票据。
当选择左侧列表中的客户时 - 在右侧列表中加载票证。 NHibernate Session在MainWindow启动时打开。在ViewModel中为在BackgroundWorker中执行的每个客户加载票证。 现在列表中约有5000个客户。当我快速选择一个客户然后下一个客户时 - 如果第一个客户的票据列表尚未加载 - 我从nhibernate获得错误。错误不同:集合由flush处理两次,找到对集合的共享引用,并且还没有在网格中加载票证列表。 我们不希望在主UI线程中加载票证,因为这个冻结UI和票证可能很重要。在我们的应用程序中如何正确使用NHibernate会话?
答案 0 :(得分:0)
我会按照here
所描述的那样做在backgroundthread中打开无状态会话以加载maingrid的数据,并为每个子窗口打开一个新会话,并使用changetracking加载所选项目