c# - ASP.NET 中的 FluentNHibernate session 管理

标签 c# nhibernate singleton sessionfactory nhibernate-burrow

NHibernate 新手(我的免责声明)。我遇到了一个相似且有趣的 article regarding MVC但是,我更好奇在通用 Web 应用程序中管理 NHibernate session 的一般最佳实践是什么。

我遇到了 Burrow项目,但我开始意识到似乎有几个不同的方向可以采取。我知道 create a new SessionFactory 可能不符合我的最佳利益每次我需要接触数据库时,我都对社区如何管理 session 很感兴趣。你用Burrow吗?您是否将 SessionFactory 包装在单例中?

任何方向或见解总是非常感谢。

最佳答案

要直接回答您的问题,您的 ISessionFactory 对象应该是单例。您可以通过编程方式执行此操作(即通过将其包装在 C# 单例中)或通过在您的 IoC 容器中配置它。

至于 session ,Burrow 看起来不错,但是 Web 应用程序中最主要和最简单的 session 模式 - OpenSessionInView - 随 NHibernate 2.0.0 开箱即用。也就是说,您的数据访问代码调用 ISessionFactory.GetCurrentSession() 而不是 ISessionFactory.OpenSession()。然后,您通过指定 ICurrentSessionContext 的实现来说明工厂的当前 session 是如何管理的。 NHibernate 提供了两个开箱即用的方法,用于将 session 与 Web 请求对齐。这在文档中称为“上下文 session ”。

毫无疑问,更复杂的 Web 应用程序可能需要更持久的对话以及复杂的延迟加载等,但对于标准的 Web 应用程序,NHibernate 上下文 session 应该足够了。

关于c# - ASP.NET 中的 FluentNHibernate session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428793/

相关文章:

c# - 如何使用where条件

c# - 从另一个线程启动时,我的表单无法正确显示

c# - 为什么我的 $.ajax 调用不会从 cshtml 文件返回 json 对象?

NHibernate - 用于管理 SessionFactory/Session 的良好完整工作帮助程序类

.net - Spring.Net(和NHibernate?),缺少异常翻译器

NHibernate:一次插入多个项目

swift - Swift 2.2 的单例问题

c# - 如何从选定日期获取日期名称?

ios - 访问单例方法(ARC)时的iOS内存管理

java - 如何在 Junit 中测试 java 单例的不同实例