1

我看过很多关于如何在 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
        }

    }

这可能是一个好/坏主意的原因将不胜感激

4

1 回答 1

1

好的:

  • 这很简单
  • 它只是工作

坏的:

  • 您正在执行会话管理,即使它只是三行代码,也遍布您的代码
  • 使用扩展方法,您无法替换测试的行为

简而言之,对于小型的 RAD 和概念验证项目,您的想法可以正常工作。对于更复杂的开发,最好从控制器中提取会话管理,至少将其移至基类。

于 2013-03-11T02:03:19.467 回答