我有一个使用Ninject连接到单个数据库的MVC应用程序。我被要求使用登录数据库来获取数据的连接字符串。这样我们就可以使用LoginDatabase进行身份验证,然后再去其他地方获取客户端数据。这将使我们能够为所有客户提供一个网站,而不是当前为每个客户设置一个webapp的网站。
我们遇到的问题是,在加载应用程序和用户登录时,我们已经绑定到Login数据库。我们需要能够在用户成功登录后重新绑定Ninject部分。 ,对于Ninject来说我还很陌生,而这目前正在我的脑海中回荡。
这是启动时调用的代码:
private static IKernel CreateKernel()
{
var main = ConfigurationManager.ConnectionStrings["MainConnection"].ConnectionString;
var mainKernel = new StandardKernel(new INinjectModule[]
{
new AllBindings(main)
});
mainKernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
mainKernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(mainKernel);
return mainKernel;
}
和AllBindings中的load函数
public override void Load()
{
this.Bind<IScheduleItemRepository>().To<ScheduleItemRepository>().WithConstructorArgument("ConnectionString", _mainConnectionString);
this.Bind<IOtherScheduleItemRepository>().To<OtherScheduleItemRepository>().WithConstructorArgument("myOptions", _mainConnectionString);
this.Bind<IDocumentRepository>().To<DocumentRepository>().WithConstructorArgument("myOptions", _mainConnectionString);
}
从登录数据库返回连接字符串构造函数参数后,如何最好地更改这种情况?