2010-08-27 64 views
1

这真的是我必须做的,以实现每个请求与Ninject会话?NHibernate会话管理w/Ninject

public class WebModule : NinjectModule 
{ 
    public override void Load() 
    {    
     Bind<ISession>().ToMethod(x => MvcApplication.SessionFactory.OpenSession()).InRequestScope();    
    } 
} 

的Global.asax:

public class MvcApplication : NinjectHttpApplication 
{ 
    public static ISessionFactory SessionFactory = CreateSessionFactory(); 

    public static void RegisterRoutes(RouteCollection routes) { /* Routing Stuff */ } 

    protected override void OnApplicationStarted() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     RegisterRoutes(RouteTable.Routes); 
    } 

    protected override void OnApplicationStopped() 
    { 
     SessionFactory.Dispose(); 
    } 

    protected static ISessionFactory CreateSessionFactory() { /* session factory stuff */ } 

    protected override IKernel CreateKernel() 
    { 
     return new StandardKernel(new WebModule()); 
    } 
} 

这有什么问题呢?这似乎太简单了。

回答

1

看完this post后我决定不这样做。除非有人说出来,否则我就去做the old fashioned way

+0

引用的帖子是过时的(当时也是:D)。见https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope说了这么多,手动和显式地处理'ISession's根据你在做什么没有羞耻 - 提交和管理你的工作单位肯定有意识地做。 – 2013-04-03 12:42:56