当前位置 : 主页 > 编程语言 > c语言 >

c# – ASP.NET中的FluentNHibernate会话管理

来源:互联网 收集:自由互联 发布时间:2021-06-25
NHibernate新手(我的免责声明).我遇到了类似且有趣的 article regarding MVC,但是,我对在通用Web应用程序中管理NHibernate会话的一般最佳实践更为好奇. 我遇到了Burrow项目,但我开始意识到似乎有
NHibernate新手(我的免责声明).我遇到了类似且有趣的 article regarding MVC,但是,我对在通用Web应用程序中管理NHibernate会话的一般最佳实践更为好奇.

我遇到了Burrow项目,但我开始意识到似乎有几个不同的方向.我知道每次我需要触摸数据库时,create a new SessionFactory可能不符合我的最佳利益,所以我对社区管理会话的工作感兴趣.你用Burrow吗?你将SessionFactory包装成单例吗?

任何方向或见解总是非常感激.

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

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

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

网友评论