从控制器获取非hibernate会话(Session Per Request)净MVC
本文关键字:Request Per MVC Session 获取 控制器 hibernate 会话 | 更新日期: 2023-09-27 18:03:15
我看过很多关于如何在Asp中设置每个请求的会话的帖子。通过使用ActionFilter或通过DI包将会话注入控制器。我想知道的是,仅仅做一个像
这样的扩展方法会是个坏主意/模式吗?public static ISession GetNHibernateSession(this Controller controller)
{
return SessionFactory.OpenSession();
}
以便在需要时实例化会话,例如:
public ActionResult DoSomething()
{
using( var session = this.GetNHibernateSession())
{
// Do something with the session
}
}
这可能是一个好主意/坏主意的原因将非常感谢
好:
- 很简单
- 它只是工作
坏:
- 你正在做会话管理,即使它只是三行,在你的代码
- 使用扩展方法,您不能替换用于测试 的行为
简而言之,对于小型的RAD和概念验证项目,您的想法将工作得很好。对于更复杂的开发,最好从控制器中提取会话管理,至少将其移动到基类中。