Ale*_*ril 3 c# nhibernate singleton sessionfactory nhibernate-burrow
NHibernate新手(我的免责声明).我遇到了一篇关于MVC的类似且有趣的文章,但是,我对在通用Web应用程序中管理NHibernate会话的一般最佳实践更为好奇.
我遇到了Burrow项目,但我开始意识到似乎有几个不同的方向.我知道每次我需要触摸数据库时创建一个新的SessionFactory可能不符合我的最佳利益,所以我对社区管理会话的工作感兴趣.你用Burrow吗?你将SessionFactory包装成单例吗?
任何方向或见解总是非常感激.
小智 5
要直接回答您的问题,您的ISessionFactory对象应该是单身.您可以通过编程方式(即将其包装在C#单例中)或在IoC容器中进行配置.
至于会话,Burrow看起来不错,但是Web应用程序中会话的主要和最简单的模式 - OpenSessionInView - 与NHibernate 2.0.0开箱即用.也就是说,您的数据访问代码调用ISessionFactory.GetCurrentSession()而不是ISessionFactory.OpenSession().然后,您可以通过指定实现来说明如何管理工厂的当前会话ICurrentSessionContext.NHibernate提供了两个开箱即用的功能,用于将会话与Web请求进行对齐.这在文档中称为"上下文会话".
毫无疑问,更复杂的Web应用程序可能需要更复杂的延迟加载等更持久的对话,但对于标准的Web应用程序,NHibernate上下文会话应该足够了.