2
我在我的ASP.NET MVC應用程序中使用NInject,並且我不是100%確定創建我的對象上下文時單身是如何工作的。NInject Singletons - 它們是在應用程序級還是會話級創建的?
我的問題是:
使用下面的代碼會不會有每個用戶會話一個 ObjectContext的或將 會有一個是份額爲 整個應用程序?我希望每個用戶 有一次, 只有一個背景,但每個用戶都必須有自己的 實例。
是InRequestScope()
我應該考慮什麼?
我也做一個WCF服務同樣的事情,我認爲答案是兩者相同。
我的Global.asax:
public class MvcApplication : NinjectHttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Change", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected override void OnApplicationStarted()
{
// Ninject Code
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[] { new ContextModule() };
return new StandardKernel(modules);
}
public class ContextModule : NinjectModule
{
public override void Load()
{
Bind<ObjectContext>().To<ChangeRoutingEntities>().InSingletonScope();
Bind<IObjectContext>().To<ObjectContextAdapter>();
Bind<IUnitOfWork>().To<UnitOfWork>();
}
}
}
謝謝聖雷莫。我們已經轉向爲我們的MVC應用程序請求作用域,並且它完美地工作..但是我們的WCF需要改變......我認爲它更多的與WCF配置有關,特別是instanceContextMode ......你能指點我一些很好的WCF ninject示例的方向? – littlechris 2011-01-27 09:00:39