Ну, во-первых, вам нужно прекратить использовать пул соединений.Это позволяет нескольким экземплярам вашего контекста использовать одно и то же соединение, а это не то, что вам нужно, если это соединение нужно изменить на лету.
Затем вам нужно получить строку соединения внутри регистрация DbContext
, так что каждый раз, когда создается экземпляр, он заново получает строку подключения.Как он у вас есть сейчас, он глобальный.
services.AddDbContext<MyContext>((provider, options) =>
{
// get connection string
options.UseSqlServer(connectionString);
});
Я не уверен, как написать этот код для вас, так как не ясно, что происходит с cryptography.GetProtectedValue("RandomName", dbEnvironmentVariableName)
.В общем, здесь provider
будет экземпляром IServiceProvider
, и вы хотите использовать его для получения различных услуг, необходимых для выполнения этого вызова.