Я использую NInject в своем приложении ASP.NET MVC, и я не уверен на 100%, как работает синглтон при создании контекста моего объекта.
Мой вопрос:
Используя приведенный ниже код, будет ли один ObjectContext на сеанс пользователя или будет общий для всего приложения?Я хочу, чтобы у каждого пользователя был только один контекст за один раз, но у каждого пользователя должен быть свой собственный экземпляр.
Является ли InRequestScope()
чем-то, что я должен рассмотреть?
Я тожето же самое с сервисом WCF, и я предполагаю, что ответ будет одинаковым для обоих.
My 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>();
}
}
}