也许是一个愚蠢的问题,但在这个夜晚,StackOverFlow是我唯一的朋友。
我正在玩NHibernate并希望将这两个关于Web应用程序中Sessions的陈述归结为事实。
1)对于应用程序的生命周期,每个数据库应该只有1个ISessionFactory。
2)每个HttpRequest或一批HttpRequests(即会话)应该只有1个ISession
[我不想要工具或框架推荐,只想确认以上]
答案 0 :(得分:1)
应该只有一个ISessionFactory用于应用程序的生命周期。
每个请求的会话是我如何使用NHibernate。可能还有其他模式,但这是我在网络项目中坚持的模式。
答案 1 :(得分:1)
你的假设是正确的。
每次请求会话是Web应用程序最常见的模式,并且与MVC,Web场等配合使用。
有一些现成的模块可以在http://unhaddins.googlecode.com/svn/trunk/uNhAddIns/uNhAddIns.Web/处理这些模式(你也可以检查其余的uNhAddIns)
答案 2 :(得分:0)
我们目前正在使用Session-per-Request但是在某些情况下我遇到过这种方法的问题。
我认为答案不是通用的,你应该考虑每单位工作使用一个会话。
特别是当涉及到实体的自动刷新时,每个请求的会话可能会让你陷入困境。