我一直在努力研究 NHibernate 会话管理,现在最终找到了两种可能的解决方案来满足每个 Web 请求的会话。
我在 ASPNET mvc 项目中使用 Windsor 进行 IoC
第一个解决方案是在 begin_request 中打开会话并在 end_request 中再次关闭/处置它。在温莎设置中我会
容器.Register(Component.For().UsingFactoryMethod(() => SessionFactory.GetCurrentSession()).LifeStyle.Transient;
此解决方案为每个请求创建会话并通过 GetCurrentSession 共享它。
第二种解决方案是使用 Windsor 像
容器.Register(Component.For().UsingFactoryMethod(() => SessionFactory.OpenSession()).LifeStyle.PerWebRequest);
这还可以为每个网络请求提供一个会话并支持构造函数注入。这有点简单,但我需要第二个意见。
请让我知道您想使用什么,
此致
拉斯穆斯
我不推荐这两种解决方案中的任何一个。与其尝试重新发明轮子,不如使用NHibernate 设施 http://www.castleproject.org/container/facilities/trunk/nhibernate/index.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)