Изменение строки подключения после Bind in Ninject - PullRequest
0 голосов
/ 22 октября 2018

У меня есть приложение MVC, использующее Ninject для подключения к одной базе данных.Меня попросили использовать базу данных входа в систему, чтобы получить строку подключения для данных.Это делается для того, чтобы мы могли аутентифицироваться, используя базу данных LoginDatabase, а затем уходить куда-то еще для данных клиента.Это позволит нам иметь один веб-сайт для всех наших клиентов, а не текущую настройку одного веб-приложения для каждого клиента.

Проблема, с которой мы сталкиваемся, заключается в том, что мы уже привязаны к базе данных 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

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);

    }

Как лучше всего изменить аргумент конструктора строки подключенияв этом случае после того, как я вернул его из базы данных входа в систему?

...