c# - 当我有两个(或更多)具有不同数据库连接的配置文件时,如何通过迁移更新数据库?
问题描述
首先,这不重要,只是为了学习。
我有两个配置文件appsettings.Development.json
和appsettings.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”怎么办?
解决方案
您可以使用以下命令在环境之间切换:
$Env:ASPNETCORE_ENVIRONMENT = "Local"
$env:ASPNETCORE_ENVIRONMENT = "Development"
$env:ASPNETCORE_ENVIRONMENT = "Release"
这些命令从 Visual Studio 进入您的 cli
然后使用以下命令,您可以更新数据库并选择正确的上下文。
Add-Migration -Context:ApplicationDbContext xxxxxx
Update-Database -Context:ApplicationDbContext
推荐阅读
- spring-boot - Springboot 通过过滤器获取动态 JSON 内容
- scala - 通过隐式类重载泛型方法
- acumatica - 为什么 Acumatica ERP PX.DataSource 在设计视图中出现渲染错误?
- reactjs - 用于服务器端渲染的 create-react-app 打字稿
- r - 根据时间移动日期
- hyperledger-fabric - 在 Visual Studio Code 上遵循有关 Hyperledger Fabric 的 IBM 教程时出现 JSON 错误
- artificial-intelligence - 奖励结构的制定
- push-notification - 移动推送通知设置和用户定位
- android - 禁用片段的某些部分进行滚动,即使它位于嵌套的滚动视图中
- mysql - IntelliJ 不显示表关系