Net Core 2-实体框架:不同环境的更新数据库

Car*_*tel 3 ef-migrations entity-framework-6 asp.net-core

事实:

  • 净核心2.0项目
  • 实体框架(代码优先)
  • 适用于不同环境的不同appsettings.json文件

    我利用程序包管理器控制台生成我的数据库脚本(添加迁移,更新数据库)

如果我运行PM>“ Get-DbContext”,它将带回从我的appsettings.Development.json文件GREAT中提取的信息,这是我大多数时候想要的!

但是,我如何告诉它从appsettings.Staging.json中提取数据库变量,而不是为PM命令进行开发?

我尝试创建新的launchSettings.json配置文件并设置“ ASPNETCORE_ENVIRONMENT”:“暂存”,但是除PM之外,其他所有内容似乎都尊重这一点。

PS围绕它工作以生成具有脚本迁移的脚本,但我希望获得快速的UP和DOWN,并且不会将其用于部署到产品

Car*_*tel 8

没有充分记录,但是您必须通过在程序包管理器控制台中运行此命令来手动更改ASPNETCORE_ENVIRONMENT

PM> $env:ASPNETCORE_ENVIRONMENT='Staging'
Run Code Online (Sandbox Code Playgroud)

然后您可以运行以下命令来验证它是否指向所需的数据库:

PM> Get-DbContext
Run Code Online (Sandbox Code Playgroud)

它将踢出去

providerName                            databaseName          dataSource                                 options
------------                            ------------          ----------                                 -------
Microsoft.EntityFrameworkCore.SqlServer myDatabase            tcp:fake.database.windows.net,1433           None
Run Code Online (Sandbox Code Playgroud)

然后只需正常运行命令即可。例:

Update-Database
Run Code Online (Sandbox Code Playgroud)

对命令的引用:https : //docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell

  • 它不适用于 VS2019。环境目前没有改变。 (2认同)