我已经看过很多关于如何在Asp.Net MVC中为每个请求设置会话的帖子,方法是使用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
}
}
为什么这可能是一个好/坏的想法将非常感激
答案 0 :(得分:1)
好:
为:
简而言之,对于小型RAD和概念验证项目,您的想法将会正常运行。对于更复杂的开发,最好从控制器中提取会话管理,至少将其移动到基类。