2013-03-10 3 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

хорошо:

  • это просто
  • Он просто работает

Bad:

  • Вы делаете управление сеансами, даже если это всего лишь три линии, весь код
  • С методом расширения, вы не можете замените поведение для тестирования

Короче говоря, для небольших проектов RAD и доказательств концепции ваша идея будет работать нормально. Для более сложной разработки, вероятно, лучше извлечь управление сеансом из контроллеров, по крайней мере, переместив его в базовый класс.

Смежные вопросы