EF Core 设置环境无法按预期工作

Posted

技术标签:

【中文标题】EF Core 设置环境无法按预期工作【英文标题】:EF Core set environment not working predictably 【发布时间】:2020-12-04 17:15:09 【问题描述】:

当我去更新我的数据库时,我首先运行$env:ASPNETCORE_ENVIRONMENT="Development",然后再执行Update-Database 命令来设置正确的环境。例如,如果我之前部署了对 Test 的更改,则运行此命令应该会将我指向我的开发环境,而不再指向 Test。

不幸的是,这仅在 33% 的情况下有效。每次我运行它时,我也会运行$env:ASPNETCORE_ENVIRONMENT 并检查它是否返回正确的环境并且确实如此。然后我运行我需要的Update-Database 命令,它会以某种方式变回以前的环境。

有人知道我做错了什么或者知道我将连接到正确的数据库吗?如果命中了错误的数据库并且数据恰好被删除或系统出现故障,这可能会非常糟糕。

【问题讨论】:

你是指调试和发布模式吗? 不,我的意思是设置将要更新的环境,因此 QA、测试、暂存、生产可能是示例。这样会影响正确的数据库。 我不知道为什么会这样,但这很令人沮丧,不知道我在运行 $env:ASPNETCORE_ENVIRONMENT="Development" 后意外更新了多少次 Staging - 我现在基本上每次都仔细检查$env:ASPNETCORE_ENVIRONMENT 因为它有时似乎无法正常工作。 即使使用 VS2022 仍然会发生这种情况! 【参考方案1】:

您应该在数据库更新脚本中设置/导出变量,而不是在命令行中导出变量。因此,如果您正在运行 shell 脚本,则可以通过标准导出命令进行导出。如果您正在运行 perl/python,则应更新脚本中的环境变量。这样,您将有一致的行为。

【讨论】:

在这种情况下,我使用的是 EF Core Code First,所以我没有办法这样做。

以上是关于EF Core 设置环境无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular Reactive Forms 中的 FormGroup 实例上设置错误无法按预期工作

XPages 进度条在服务器页面持久性设置“将页面保留在内存中”时无法按预期工作

EditText 填充在 Android 中无法按预期工作

Oracle nvl函数无法按预期工作

UIViewPropertyAnimator 无法按预期工作

SaveFileDialog AddExtension 无法按预期工作