wpf - 如何在 WPF 应用程序中限定 NHibernate session 和事务

标签 wpf nhibernate mvvm transactions session

我对 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/

相关文章:

c# - 无法将匿名方法转换为类型 'System.Delegate',因为它不是委托(delegate)类型

WPF 水平数据网格

c# - WPF:无法在没有可怕视觉效果的情况下调整窗口大小

NHibernate Criteria 通过 group by 和另一个表中的 itemid 总和来选择项目

c# - 购物车超时

android - Livedata无法正确更新 fragment 中的数据

entity-framework - 带有 EF DbContext 延迟加载的 MVVM 主/详细 View - 多个 ViewModel,或全部在一个 VM 中

c# - GridView 或 DataGrid 项目的可编辑列表

wpf - WinForms ElementHost 错误

.net - 您在桌面应用程序中的 NHibernate session 管理策略是什么?