Net Core 2 - Entity Framework: 不同环境下的 Update-Database

4

事实:

  • net core 2.0 项目
  • entity framework (code first)
  • 不同的环境使用不同的appsettings.json文件

    我使用Package Manager Console生成我的数据库脚本(Add-Migration, Update-Database)

如果我运行PM>“Get-DbContext”,它会从我的appsettings.Development.json文件中获取信息,这很好,大多数时候我都想要这个!

但是如何告诉它从appsettings.Staging.json而不是development中提取db变量?

我尝试创建新的launchSettings.json配置文件,并设置“ASPNETCORE_ENVIRONMENT”:“Staging”,但似乎除了PM之外,其他所有东西都遵守它。

PS使用Script-Migration绕过此问题来生成脚本,但我想要快速的UP和DOWN,而且不会用它部署到生产环境


1
launchSettings.json 仅在您按下 F5 或 Ctrl+F5 时被 Visual Studio 2017 使用。它不会被 ASP.NET Core 本身使用。您必须在 PowerShell 或命令行(cmd.exe)中设置环境变量。 - Tseng
谢谢曾先生指引我正确的方向。 - Carntel
1个回答

13

文档不是很清晰,但你可以通过在Package Manager Console中运行此命令手动更改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://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell


看起来这只适用于.NET Core 2.0(这是OP的情况),如此处所述。 - Alisson Reinaldo Silva
3
在VS2019上它无法运行。目前环境没有变化。 - Sam Alekseev
@user3172616,这在我的VS2019上可以工作,尽管我刚刚更新了,可能是他们修复的问题。 - Chris Owens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接