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());
}
}
這有什麼問題呢?這似乎太簡單了。
引用的帖子是過時的(當時也是:D)。見https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope說了這麼多,手動和顯式地處理'ISession's根據你在做什麼沒有羞恥 - 提交和管理你的工作單位肯定有意識地做。 – 2013-04-03 12:42:56