Вы можете использовать DI для этой цели. Для этого вам нужно зарегистрировать конфигурацию в Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton<IConfiguration>(Configuration);
}
Затем вы можете добавить его в конструктор базы данных:
private readonly IConfiguration configuration;
public Database(IConfiguration config)
{
configuration = config;
}
и доступ к нему при настройке:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseSqlServer(configuration.GetConnectionString("ConnectionString"));
Другим вариантом является использование шаблона параметров. В этом случае вам нужно создать класс с нужным вам свойством:
public class ConnectionStringConfig
{
public string ConnectionString { get; set; }
}
Зарегистрируйте его при запуске:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<ConnectionStringConfig>(Configuration);
}
Внедрить в конструктор базы данных:
private readonly ConnectionStringConfig configuration;
public Database(IOptions<ConnectionStringConfig> config)
{
configuration = config.Value;
}
и доступ к нему при настройке:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseSqlServer(configuration.ConnectionString);