我对WPF和NHibernate都比较陌生,并尝试使用MVVM模式构建一个结合了两者的应用程序。但是,我很难理解应用程序何时何地应该打开和关闭NHibernate会话和事务。
根据我的阅读,建议会话应尽可能短。因此,除了明显的线程安全考虑之外,我认为在应用程序级别打开会话并分享它是不正确的?另一方面,我也意识到非常短的会话(在业务方法中作用域)将导致分离的实体,并且还阻止我利用NHibernate的延迟加载。这是设计WPF / NH应用程序的正常且不可避免的方法吗?
不幸的是,所有优秀的代码示例(以及我在这个主题上可以找到的唯一一本书 - NHibernate in Action)都专注于ASP.NET应用程序,其中最佳实践显然是相当明确的 - 会话和事务跨度完全相同一个Http请求。
所以,我很感激WPF开发人员的一些指导,帮助我理解WPF中的会话管理(理想情况下指向一些好的代码示例)。
非常感谢,
添
答案 0 :(得分:9)
这是我所知道的最好的NHibernate桌面应用程序示例之一(我相信它是用WPF编写的):