首页 > 解决方案 > 当我有两个(或更多)具有不同数据库连接的配置文件时,如何通过迁移更新数据库?

问题描述

首先,这不重要,只是为了学习。

我有两个配置文件appsettings.Development.jsonappsettings.Staging.json.

第一个有连接字符串: "DatabaseConnection": "Data Source=BlaBla;Initial Catalog=MyDatabse-DEV;Integrated Security = True;" 和第二个 "DatabaseConnection": "Data Source=BlaBla;Initial Catalog=MyDatabse-STG;Integrated Security = True;".

我想为暂存环境应用迁移(因此appsettings.Staging.json应该使用该文件)。我已经声明了一个名为ASPNETCORE_ENVIRONMENT“Staging”的环境变量。

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.EnvironmentName变量——问题解决了!没有燃烧。但是对于学习:有没有一种智能的方法来做到这一点。如果我错误地写了“Production”而不是“Staging”怎么办?

标签: c#.netentity-frameworkasp.net-web-apiconfiguration

解决方案


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

$Env:ASPNETCORE_ENVIRONMENT = "Local"
$env:ASPNETCORE_ENVIRONMENT = "Development"
$env:ASPNETCORE_ENVIRONMENT = "Release"

这些命令从 Visual Studio 进入您的 cli

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

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

推荐阅读