.NET Core 2 EF(Code First)如何指定Staging环境执行PM数据库命令?
切换EF Core PMC命令到Staging环境配置的方法
嘿,这个场景我之前折腾过几次,给你分享几个实用的办法,帮你让PMC命令读取appsettings.Staging.json的配置:
方法一:临时设置PMC会话的环境变量
这是最快捷的临时方案,只在当前PMC窗口生效:
- 打开程序包管理器控制台,先执行命令设置环境变量:
$env:ASPNETCORE_ENVIRONMENT = "Staging" - 接下来再执行
Get-DbContext、Add-Migration或者Update-Database,EF就会自动加载appsettings.Staging.json里的数据库配置了。 - 注意:关闭PMC窗口后这个设置会失效,下次打开需要重新执行第一步。
方法二:通过launchSettings.json配置持久化环境
如果你需要经常用Staging环境执行命令,可以修改项目的launchSettings.json来固化配置:
- 打开项目根目录下的
launchSettings.json,添加一个Staging环境的配置节点:"profiles": { // 其他已有配置... "Staging": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Staging" } } } - 在PMC的顶部,找到“启动配置”下拉框(就在“默认项目”旁边),选择刚添加的
Staging配置。 - 现在执行任何EF命令都会自动使用Staging环境的配置了。
小提示:如果你的DbContext在类库项目里,记得把Web项目设为启动项目,因为类库本身没有环境配置,会依赖启动项目的
launchSettings。
方法三:命令行直接指定连接字符串(临时应急用)
如果只是偶尔执行一次,不想改环境变量,也可以直接在命令里指定Staging的连接字符串:
Update-Database -Connection "Server=你的 staging 服务器;Database=你的库名;Trusted_Connection=True;"
或者配合-Context参数指定特定的DbContext:
Add-Migration StagingInit -Context YourDbContext -Connection "你的 staging 连接字符串"
这个方法虽然直接,但每次都要写长串的连接字符串,适合临时应急场景。
内容的提问来源于stack exchange,提问作者Carntel
相关产品推荐
相关产品推荐

