joa*_*mja 35 c# entity-framework-core .net-core visual-studio-2017
我使用visual studio通过一定的迁移来更新我的所有环境.它使用下面的命令工作正常.
update-database -Migration initMigrationProduct -c ProductContext -Environment Production
Run Code Online (Sandbox Code Playgroud)
在ef core 2.0中,此命令已更改,参数-Environment已被删除.在文档中说.
"使用2.0,您可以使用ASPNETCORE_ENVIRONMENT环境变量."
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
我现在尝试了各种方法,但是当我运行update-databaseef核心2.0时,它不使用ASPNETCORE_ENVIRONMENT变量.我试着在注册表中设置应用程序属性.
请让我知道我需要做些什么来更新不同的环境?
如果我使用不同的lanchsettings启动应用程序,它可以工作但不使用包管理器控制台.
小智 63
要在程序包管理器控制台(PMC)中设置ASPNETCORE_ENVIRONMENT变量,在visual studio内部,到Production,首先使用此命令
$env:ASPNETCORE_ENVIRONMENT='Production'
Run Code Online (Sandbox Code Playgroud)
然后你可以使用
Update-Database
Run Code Online (Sandbox Code Playgroud)
一般.
小智 12
我和这个问题的记者有同样的问题,并在包管理器控制台(PMC)中尝试了最近的解决方案,并使用以下命令设置环境变量:
$env:ASPNETCORE_ENVIRONMENT='YOUR_ENVIRONMENT'
Run Code Online (Sandbox Code Playgroud)
不幸的是,我有一个 ConsoleApplication 并在启动时使用通用主机构建器Host.CreateDefaultBuilder()。在这种情况下,环境变量前缀不是 ASPNETCORE_but DOTNET_。
对我来说,这个命令在 PMC 中有效:
$env:DOTNET_ENVIRONMENT='YOUR_ENVIRONMENT'
Run Code Online (Sandbox Code Playgroud)
我要感谢 Martin Florin 和其他人引导我走向正确的方向。
从 EF Core 5.0 开始,也可以使用 --environment 参数提供环境,但您还需要在之前指定“--”标记:
dotnet ef database update -- --environment Production
Run Code Online (Sandbox Code Playgroud)
正如文档所述:
-- 标记指示 dotnet ef 将后面的所有内容视为参数,而不是尝试将它们解析为选项。dotnet ef 未使用的任何额外参数都将转发到应用程序
在 Visual Studio 中使用包管理器对我来说是一条死胡同。解决方案是:
在解决方案的启动项目的 .csproj 中添加以下内容:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)打开命令工具(cmd)并进入与启动项目所在的.csproj相同的文件夹(默认项目)。
按照 Anton Toshik 建议运行命令set ASPNETCORE_ENVIRONMENT=Production
4.然后运行命令dotnet ef database update initMigrationProduct -c ProductContext现在就可以了。
备注:在此命令中database,update自早期版本以来已更改位置。并且没有用于迁移的参数/代码。文档在此澄清后解释了更多信息:
https ://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
| 归档时间: |
|
| 查看次数: |
11462 次 |
| 最近记录: |