我正在使用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)
{...}
但如何在上下文类中访问它? 感谢
答案 0 :(得分:4)
在DbContext类中需要IConfiguration的情况下,您必须将其添加到构造函数中:
public class MyDbContext : DbContext
{
private readonly IConfiguration _configuration;
public MyDbContext(IConfiguration configuration)
{
_configuration = configuration;
}
}
但是你还必须从DI获得MyDbContext
。因此静态类不能将其作为参数接收。您将不得不重新考虑如何使用DbContext,并对其进行更改以便在某处获得对DI的访问权限,并将其作为参数传递给任何需要它的静态方法。