Asp.net core Net核心2-实体框架:更新不同环境的数据库

Asp.net core Net核心2-实体框架:更新不同环境的数据库,asp.net-core,entity-framework-6,entity-framework-migrations,Asp.net Core,Entity Framework 6,Entity Framework Migrations,事实: net核心2.0项目 实体框架(代码优先) 不同环境下的不同appsettings.json文件 我利用PackageManager控制台生成我的DB脚本(添加迁移、更新数据库) 如果我运行PM>“Get-DbContext”,它会从我的appsettings.Development.json文件中返回信息——太好了,这就是我大多数时候想要的 但是我如何告诉它从appsettings.Staging.json中提取db变量,而不是为PM命令进行开发? 我尝试创建新的launchSet

事实:

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

    我利用PackageManager控制台生成我的DB脚本(添加迁移、更新数据库)

如果我运行PM>“Get-DbContext”,它会从我的appsettings.Development.json文件中返回信息——太好了,这就是我大多数时候想要的

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

我尝试创建新的launchSettings.json配置文件并设置“ASPNETCORE_环境”:“Staging”,但除了PM之外,其他一切似乎都尊重这一点


PS通过脚本迁移来生成脚本,但我希望得到快速的上下转换,并且不会使用它部署到prod,这一点没有很好的文档记录,但您可以通过在Package Manager控制台中运行此命令手动更改ASPNETCORE_环境

PM> $env:ASPNETCORE_ENVIRONMENT='Staging'
然后,您可以运行此命令以验证它是否指向所需的数据库:

PM> Get-DbContext
哪一个会踢出去

providerName                            databaseName          dataSource                                 options
------------                            ------------          ----------                                 -------
Microsoft.EntityFrameworkCore.SqlServer myDatabase            tcp:fake.database.windows.net,1433           None
然后像平常一样运行命令。例如:

Update-Database

对命令的引用:

launchSettings.json仅在点击F5或Ctrl+F5时由Visual Studio 2017使用。ASP.NET核心本身不使用它。您必须在powershell或命令行(cmd.exe)中设置环境变量。谢谢您为我指出了正确的方向。如前所述,这似乎只适用于.net core 2.0(这是OP的情况)。它不适用于VS2019。环境目前没有改变。@user3172616这在VS2019上对我有效,尽管我刚刚进行了更新,所以可能是他们已经修复的东西。