如何访问 DbContext 类中的配置?

mra*_*api 5 c# asp.net-core-mvc asp.net-core

我正在使用 ASP.NET Core 2 我正在尝试访问上下文类中的配置,我已经完成了这样的配置:在 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();
Run Code Online (Sandbox Code Playgroud)

在 Startup.cs 中:

 public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
Run Code Online (Sandbox Code Playgroud)

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

public HomeController(IConfiguration configuration)
   {...}
Run Code Online (Sandbox Code Playgroud)

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

juu*_*nas 7

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

public class MyDbContext : DbContext
{
    private readonly IConfiguration _configuration;

    public MyDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
    }
}
Run Code Online (Sandbox Code Playgroud)

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