Как читать настройки приложения из CreateDbContext - PullRequest
0 голосов
/ 26 сентября 2019

Я использую IDesignTimeDbContextFactory для использования EF-миграций, и мне нужно прочитать файл appsettings.json из CreateDbContext метод.

Проблема в том, что находится appsettings.jsonв другой сборке.

public DataContext CreateDbContext(string[] args)
{
    var builder = new DbContextOptionsBuilder<DataContext>();

    var connectionString = _configuration.GetConnectionString("Database:ConnectionString");

    builder.UseSqlServer(connectionString, option =>
    {
        option.MigrationsAssembly("MyDbContextAssembly");
    });

    return new DataContext(builder.Options);
}

В этом классе мне нужен конструктор без параметров, и я не могу внедрить IConfiguration.

Как решить эту проблему?

1 Ответ

1 голос
/ 26 сентября 2019

Затем создайте конфигурацию в функции.Вы можете установить базовый путь, по которому следует загружать настройки:

public DataContext CreateDbContext(string[] args) {    
    // Build config
    IConfiguration configuration = new ConfigurationBuilder()
        .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../Relative path here"))
        .AddJsonFile("appsettings.json")
        .Build();

    // Get connection string
    var builder = new DbContextOptionsBuilder<DataContext>();
    var connectionString = configuration .GetConnectionString("Database:ConnectionString");
    builder.UseSqlServer(connectionString, option =>
    {
        option.MigrationsAssembly("MyDbContextAssembly");
    });
    return new DataContext(builder.Options);
}

Нашел полезную статью здесь с еще большей настройкой.

...