我对 WPF 和 NHibernate 都比较陌生,并尝试使用 MVVM 模式构建将两者结合起来的应用程序。但是,我很难理解我的应用程序应该在何时何地打开和关闭 NHibernate session 和事务。
根据我所阅读的内容,建议 session 应尽可能短。因此,除了明显的线程安全考虑之外,我认为在应用程序级别打开 session 并共享它是不正确的?另一方面,我也意识到非常短的 session (在业务方法范围内)会导致分离的实体,也会阻止我利用 NHibernate 的延迟加载。这是设计 WPF/NH 应用程序的正常且不可避免的方式吗?
不幸的是,所有好的代码示例(以及我能找到的关于这个主题的唯一一本书 - NHibernate in Action)都专注于 ASP.NET 应用程序,其中最佳实践显然相当明确 - session 和事务恰好跨越一个 Http 请求.
因此,我希望 WPF 开发人员提供一些指导,以帮助我了解 WPF 中的 session 管理(理想情况下为我指出一些好的代码示例)。
非常感谢,
蒂姆
最佳答案
这是我所知道的最好的 NHibernate 桌面应用程序示例之一(我相信它是用 WPF 编写的):
Building a Desktop To-Do Application with NHibernate
关于wpf - 如何在 WPF 应用程序中限定 NHibernate session 和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253025/