簡體   English   中英

ef core 在更新數據庫期間不使用 AS.NETCORE_ENVIRONMENT

[英]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 中使用包管理器對我來說是一個死胡同。 解決方案是:

  1. 在解決方案的啟動項目中的 .csproj 中添加以下內容:

     <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>
  2. 打開命令工具(cmd)並轉到與啟動項目所在的 .csproj 相同的文件夾(默認項目)。

  3. 按照 Anton Toshik 的建議運行命令set ASPNETCORE_ENVIRONMENT=Production

4.然后運行命令dotnet ef database update initMigrationProduct -c ProductContext現在就可以了。

備注:在此命令中, databaseupdate自早期版本以來已更改。 並且沒有用於遷移的參數/代碼。 在此澄清之后,文檔解釋了更多:
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM