2010-08-27 142 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