1

I am familiar with using ASP.NET Core with EF Core, where you just define your DBContext in the ConfigureServices method from Startup.cs for DI, like so:

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

However, I have been asked to add Dapper to this project (it will still use EF) but I can't even fetch the connection string. I found Brad Patton's answer here to be along the lines of what I had in mind, but he leaves the setup of the Configuration object up to the reader:

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

After googling around for a couple of hours, I still have no idea of how to implement the IConfiguration interface. Any help is appreciated.

makoshichi
  • 2,310
  • 6
  • 25
  • 52

1 Answers1

4

With ASP.NET Core 2.x you no longer need to register the IConfiguration type yourself. Instead, the framework will already register it with the dependency injection container for you. So you can just inject IConfiguration in your services directly.

You can also take a look at the options pattern to see how to implement the configuration for your own service layer. So you could do it like this:

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

Assuming a MyDatabaseOptions type that you inject into your service using the options pattern.

poke
  • 369,085
  • 72
  • 557
  • 602