NetCore 2.2 Изменить SQLConnection с помощью переменной среды - PullRequest
0 голосов
/ 08 марта 2019

Нужна помощь в динамическом изменении строки подключения, предоставляемой в API для netcore 2.2.

Это мой пример кода

Public StartUp

_connectionString = cryptography.GetProtectedValue ("RandomName ", dbEnvironmentVariableName);

Public ConfigureServices

services.AddDbContextPool (s => s.UseSqlServer (_connectionString));

Пользователь может изменить переменную среды в любое времяи мне нужно, чтобы API воспринимал это изменение динамически каждый раз, когда оно изменяется.

Я не могу найти где-нибудь, чтобы увидеть, что это происходит, кроме как что-то настраивать в контроллере, но это просто кажется неправильным.

Любые мысли.

1 Ответ

1 голос
/ 08 марта 2019

Ну, во-первых, вам нужно прекратить использовать пул соединений.Это позволяет нескольким экземплярам вашего контекста использовать одно и то же соединение, а это не то, что вам нужно, если это соединение нужно изменить на лету.

Затем вам нужно получить строку соединения внутри регистрация DbContext, так что каждый раз, когда создается экземпляр, он заново получает строку подключения.Как он у вас есть сейчас, он глобальный.

services.AddDbContext<MyContext>((provider, options) =>
{
    // get connection string
    options.UseSqlServer(connectionString);
});

Я не уверен, как написать этот код для вас, так как не ясно, что происходит с cryptography.GetProtectedValue("RandomName", dbEnvironmentVariableName).В общем, здесь provider будет экземпляром IServiceProvider, и вы хотите использовать его для получения различных услуг, необходимых для выполнения этого вызова.

...