EF核心环境选择

时间:2020-05-06 20:58:15

标签: asp.net-core entity-framework-core visual-studio-2019

我们最近开始在代码优先模型中使用EF Core在.net Core中编写应用程序。以前,我们将更改web.config中的连接字符串以指向要更新的数据库,然后运行Update-Database -Verbose,效果很好。

现在要选择环境,以便使用正确的连接字符串,我们必须运行$env:ASPNETCORE_ENVIRONMENT = "Development",然后运行Update-Database -Verbose。这就是我的问题所在,我可以运行命令以将环境设置为开发环境,但它仍指向我的测试环境,然后可以再次运行确切的命令,然后将其指向我的开发环境。

这是一个已知问题,还是我与EF Core交互不正确?我不想说的是,我们已经在生产中使用了此应用程序,并且在尝试更新我的开发数据库时不小心更新了生产数据库。

1 个答案:

答案 0 :(得分:0)

在ASP .NET Core Web应用程序中,您可以在Startup.cs中设置ConfigureServices,以便根据当前环境连接到适当的数据库:

    public void ConfigureServices(IServiceCollection services)
    {
        if (_env.IsDevelopment())
        {
            services.AddDbContext<MyDbContext>(options =>
                options.UseThisDb(MyDevDbConnectionString)
        );
        }
        else
        {
            // For production.
            services.AddDbContext<MyDbContext>(options =>
                options.UseThisDb(MyProdDbConnectionString)
        );
    }