Как реализовать интерфейс IConfiguration в ASP.NET Core для использования Dapper? - PullRequest
0 голосов
/ 01 октября 2018

Я знаком с использованием ASP.NET Core с EF Core, где вы просто определяете свой DBContext в методе ConfigureServices из Startup.cs для DI, например:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }

ОднакоМеня попросили добавить Dapper в этот проект (он все еще будет использовать EF), но я даже не могу получить строку подключения.Я нашел ответ Брэда Паттона здесь в соответствии с тем, что я имел в виду, но он оставляет настройку объекта Configuration читателю:

public void ConfigureServices(IServiceCollection services)
{
    ...
    // Add the whole configuration object here.
    services.AddSingleton<IConfiguration>(Configuration);
}

Послепоглядывая на пару часов, я до сих пор не представляю, как реализовать интерфейс IConfiguration.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 октября 2018

В ASP.NET Core 2.x вам больше не нужно регистрировать тип IConfiguration самостоятельно.Вместо этого фреймворк уже зарегистрирует его в контейнере внедрения зависимостей.Таким образом, вы можете просто внедрить IConfiguration в свои сервисы напрямую.

Вы также можете взглянуть на шаблон options , чтобы увидеть, как реализовать конфигурацию для вашего собственного сервисного уровня.Таким образом, вы можете сделать это следующим образом:

services.Configure<MyDatabaseOptions>(options =>
{
    options.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
});

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

...