2013-03-10 101 views
1

我已經看到了很多關於如何在Asp.Net MVC中通過使用ActionFilter或DI包將會話注入到控制器中的請求來設置會話的文章。我想知道的是,會是一個壞主意/模式只是讓喜歡的擴展方法:從控制器獲取Nhibernate ISession(每個會話請求)ASP.Net MVC

public static ISession GetNHibernateSession(this Controller controller) 
{ 
    return SessionFactory.OpenSession(); 
} 

以便在需要像當會話可以被實例化:

public ActionResult DoSomething() 
    { 
     using( var session = this.GetNHibernateSession()) 
     { 
      // Do something with the session 
     } 

    } 

原因這可能是一個好/壞主意,將不勝感激

回答

1

好:

  • 很簡單
  • 這只是工作

壞:

  • 你正在做的會話管理,哪怕它只是一個三線,在你的代碼
  • 隨着擴展方法,你不能替換測試行爲

簡而言之,對於小型RAD和概念驗證項目,您的想法可以正常工作。對於更復雜的開發,最好從控制器中提取會話管理,至少將其移動到基類。

相關問題