绑定到Ninject

时间:2018-10-22 12:37:41

标签: c# .net model-view-controller ninject

我有一个使用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);

    }

从登录数据库返回连接字符串构造函数参数后,如何最好地更改这种情况?

0 个答案:

没有答案