【问题标题】:Net Core 2 - Entity Framework: Update-Database of different environmentNet Core 2 - 实体框架:不同环境的更新数据库
【发布时间】:2018-08-01 12:14:05
【问题描述】:

事实:

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

    我使用包管理器控制台来生成我的数据库脚本(添加迁移、更新数据库)

如果我运行 PM>“Get-DbContext”,它会带回从我的 appsettings.Development.json 文件中提取的信息,这就是我大部分时间想要的!

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

我尝试创建新的 launchSettings.json 配置文件并设置 "ASPNETCORE_ENVIRONMENT": "Staging" 但除了 PM 之外,一切似乎都尊重这一点。

PS 解决它以使用 Script-Migration 生成脚本,但我希望我得到的快速 UP 和 DOWN 并且不会使用它来部署到 prod

【问题讨论】:

  • launchSettings.json 仅在您按 F5 或 Ctrl+F5 时由 Visual Studio 2017 使用。 *ASP.NET Core 本身不使用它。您必须在 powershell 或命令行 (cmd.exe) 中设置环境变量
  • 感谢 Tseng,您为我指明了正确的方向

标签: asp.net-core entity-framework-6 entity-framework-migrations


【解决方案1】:

没有很好的文档记录,但您必须通过在包管理器控制台中运行此命令来手动更改 ASPNETCORE_ENVIRONMENT

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

命令参考:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

【讨论】:

  • 看起来这只适用于.net core 2.0(这是OP的情况),如here所述。
  • 它不适用于 VS2019。目前环境没有改变。
  • @user3172616 这在 VS2019 上对我有用,虽然我刚刚更新了所以可能是他们已经修复的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2023-03-16
  • 2016-12-16
  • 1970-01-01
  • 2018-04-06
相关资源
最近更新 更多