如何在DbContext类中访问Configuration?

时间:2017-11-06 06:49:35

标签: c# asp.net-core asp.net-core-mvc

我正在使用ASP.NET Core 2我正在尝试在上下文类中访问Configuration,我已经完成了这样的配置: 在Program.cs中:

 public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
        ......
             .ConfigureAppConfiguration((builderContext, config) =>
             {
                 IHostingEnvironment env = builderContext.HostingEnvironment;

                 config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                       .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
             })

           .Build();

在Startup.cs中:

 public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

我可以在这样的控制器中访问它:

public HomeController(IConfiguration configuration)
   {...}

但如何在上下文类中访问它? 感谢

1 个答案:

答案 0 :(得分:4)

在DbContext类中需要IConfiguration的情况下,您必须将其添加到构造函数中:

public class MyDbContext : DbContext
{
    private readonly IConfiguration _configuration;

    public MyDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
    }
}

但是你还必须从DI获得MyDbContext。因此静态类不能将其作为参数接收。您将不得不重新考虑如何使用DbContext,并对其进行更改以便在某处获得对DI的访问权限,并将其作为参数传递给任何需要它的静态方法。