![](/img/trans.png)
[英]EF Core `update-database` on MySql fails with `__EFMigrationsHistory' doesn't exist`
[英]ef core doesn't use ASPNETCORE_ENVIRONMENT during update-database
我使用 visual studio 通過特定的遷移來更新我的所有環境。 使用下面的命令它工作正常。
update-database -Migration initMigrationProduct -c ProductContext -Environment Production
在 ef core 2.0 中,此命令已更改並且參數 -Environment 已被刪除。 它在文檔中說。
“在 2.0 中,您可以改用 AS.NETCORE_ENVIRONMENT 環境變量。”
https://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/do.net
我現在已經嘗試了各種方法,但是當我使用 ef core 2.0 運行update-database
時,它不使用AS.NETCORE_ENVIRONMENT
變量。 我試圖在注冊表中設置應用程序屬性。
請讓我知道我需要做什么才能使它工作以更新不同的環境?
如果我使用不同的啟動設置啟動應用程序,它可以工作,但不使用launchsettings
管理器控制台。
要將 ASPNETCORE_ENVIRONMENT 變量在 Visual Studio 內的 Package Manager Console (PMC) 中設置為 Production,請先使用此命令
$env:ASPNETCORE_ENVIRONMENT='Production'
然后你可以使用
Update-Database
通常。
從 EF Core 5.0 開始,也可以使用 --environment 參數提供環境,但您還需要在之前指定“--”標記:
dotnet ef database update -- --environment Production
正如文檔所述:
-- 標記指示 dotnet ef 將后面的所有內容視為參數,而不是嘗試將它們解析為選項。 dotnet ef 未使用的任何額外參數都將轉發到應用程序
我遇到了與此問題的記者相同的問題,並在包管理器控制台 (PMC) 中嘗試了最近的解決方案,並使用以下命令設置了環境變量:
$env:ASPNETCORE_ENVIRONMENT='YOUR_ENVIRONMENT'
不幸的是,我有一個 ConsoleApplication 並在啟動時使用通用主機構建器Host.CreateDefaultBuilder()
。 在這種情況下,環境變量前綴不是ASPNETCORE_
而是DOTNET_
。
對我來說,這個命令適用於 PMC:
$env:DOTNET_ENVIRONMENT='YOUR_ENVIRONMENT'
我要感謝 Martin Florin 和其他人引導我走向正確的方向。
根據EntityFrameworkCore#6846正確的解決方案是使用--environment
選項, dotnet ef
命令不尊重ASPNETCORE_ENVIRONMENT
dotnet ef database update --environment Production
您可以在命令行/終端中使用以下命令來設置環境變量。
$env:ASPNETCORE_ENVIRONMENT = 'Development'
dotnet ef migrations add newMigrationTest
在 Visual Studio 中使用包管理器對我來說是一個死胡同。 解決方案是:
在解決方案的啟動項目中的 .csproj 中添加以下內容:
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>
打開命令工具(cmd)並轉到與啟動項目所在的 .csproj 相同的文件夾(默認項目)。
按照 Anton Toshik 的建議運行命令set ASPNETCORE_ENVIRONMENT=Production
4.然后運行命令dotnet ef database update initMigrationProduct -c ProductContext
現在就可以了。
備注:在此命令中, database
和update
自早期版本以來已更改。 並且沒有用於遷移的參數/代碼。 在此澄清之后,文檔解釋了更多:
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.