C# 当我有两个(或更多)具有不同数据库连接的配置文件时,如何通过迁移更新数据库?

C# 当我有两个(或更多)具有不同数据库连接的配置文件时,如何通过迁移更新数据库?,c#,.net,entity-framework,asp.net-web-api,configuration,C#,.net,Entity Framework,Asp.net Web Api,Configuration,首先,这是为了学习 我有2个配置文件appsettings.Development.json和appsettings.Staging.json 第一个具有连接字符串: “DatabaseConnection”:“数据源=BlaBla;初始目录=MyDatabase DEV;集成安全性=True;” 第二个呢 “数据库连接”:“数据源=BlaBla;初始目录=mydatabase STG;集成安全性=True;” 我想为Staging环境应用迁移(因此应该使用appsettings.Staging

首先,这是为了学习

我有2个配置文件appsettings.Development.json和appsettings.Staging.json

第一个具有连接字符串: “DatabaseConnection”:“数据源=BlaBla;初始目录=MyDatabase DEV;集成安全性=True;” 第二个呢 “数据库连接”:“数据源=BlaBla;初始目录=mydatabase STG;集成安全性=True;”

我想为Staging环境应用迁移(因此应该使用appsettings.Staging.json文件)。我已经将名为ASPNETCORE_ENVIRONMENT的ENVIRONMENT变量与值转移分离

在Startup.cs中,我有以下代码:

 var builder = new ConfigurationBuilder()
              .SetBasePath(env.ContentRootPath)
              .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
              .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true)
              .AddEnvironmentVariables();
            configuration = builder.Build();
无论我做什么,环境名称的价值总是“发展”

解决方案:将env.EnvironmentName变量替换为“Staging”-问题已解决!没有燃烧。但是对于学习:有没有一种智能的方法可以做到这一点。如果我错写了“生产”而不是“分期”怎么办


提前谢谢

您可以使用以下命令在环境之间切换:

$Env:ASPNETCORE_ENVIRONMENT = "Local"
$env:ASPNETCORE_ENVIRONMENT = "Development"
$env:ASPNETCORE_ENVIRONMENT = "Release"
这些命令从VisualStudio进入cli

然后,使用以下命令,您可以更新数据库并选择正确的上下文

Add-Migration -Context:ApplicationDbContext xxxxxx
Update-Database -Context:ApplicationDbContext