Вам не нужно загружать строку подключения из web.config. Реализуйте конструктор в вашем DbContext, который принимает строку подключения, и вы можете предоставить все, что захотите.
В EF Core это выглядит так:
public class MyDatabase : DbContext
{
readonly string connectionString;
public MyDatabase(string connectionString)
{
this.connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(connectionString);
base.OnConfiguring(optionsBuilder);
}
}
и в EF6 вот так:
public class MyDatabase : DbContext
{
public MyDatabase(string connectionString) : base(connectionString)
{
}
}
Обратите внимание, что при динамическом изменении строки подключения DbContext не будет инициализироваться несколько раз.