【发布时间】:2019-02-05 15:54:00
【问题描述】:
我有一个。 NET 核心控制台应用程序,它实现了 IHostedService 和对具有 DbContext 定义的另一个项目的引用。 这是控制台应用程序中 DbContext 的配置:
IHost host = new HostBuilder()
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddEnvironmentVariables(prefix: "ASPNETCORE_");
configHost.AddCommandLine(args);
})
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.SetBasePath(Directory.GetCurrentDirectory());
configApp.AddEnvironmentVariables(prefix: "ASPNETCORE_");
configApp.AddJsonFile($"appsettings.json", true);
configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", true);
configApp.AddCommandLine(args);
})
.ConfigureServices((hostContext, services) =>
{
services.AddDbContext<MyAppDbContext>(options => options.UseNpgsql(hostContext.Configuration.GetConnectionString("DefaultConnection")));
services.AddHostedService<ApplicationLifetimeHostedService>();
})
.Build();
现在,在 ApplicationLifetimeHostedService 的 OnStarted() 方法中,我有:
using (var _context = new MyAppDbContext())
{
...
_context.SaveChanges();
}
为什么 MyAppDbContext 从 dbcontext 定义类的 OnConfiguring 方法中获取连接字符串值(硬编码,从脚手架生成),而不是从 appsettings.{ASPNETCORE_ENVIROMENT}.json ()?
提前感谢您!
【问题讨论】: