[英]Getting Nhibernate ISession from Controller (Session Per Request) ASP.Net MVC
I have seen many posts of how to setup a session per request in Asp.Net MVC by using ActionFilter or by a DI package to inject the session into the controller. 我已经看过许多有关如何通过使用ActionFilter或通过DI包将会话注入控制器中的方式在Asp.Net MVC中为每个请求设置会话的文章。 What I wanted to know was, will it be a bad idea/pattern to just make an extension method like :
我想知道的是,仅仅制作一个扩展方法,例如:
public static ISession GetNHibernateSession(this Controller controller)
{
return SessionFactory.OpenSession();
}
so that the session can be instantiated when required like : 这样可以在需要时实例化会话,例如:
public ActionResult DoSomething()
{
using( var session = this.GetNHibernateSession())
{
// Do something with the session
}
}
reasons why this may be a good/bad idea will be greatly appreciated 为什么这可能是个好主意的原因将不胜感激
Good: 好:
Bad: 坏:
In short, for small, RAD and proof-of-concept projects, your idea will work just fine. 简而言之,对于小型RAD和概念验证项目,您的想法会很好地起作用。 For more complex development, it's probably better to extract session management from the controllers, at least moving it to a base class.
对于更复杂的开发,最好从控制器中提取会话管理,至少将其移至基类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.