2017-08-25 46 views
6

我使用visual studio通過特定的遷移來更新我的所有環境。它使用下面的命令工作正常。ef核心在更新數據庫期間不要使用ASPNETCORE_ENVIRONMENT

update-database -Migration initMigrationProduct -c ProductContext -Environment Production 

在ef core 2.0中,此命令已更改並且參數環境已被刪除。它在文檔中說。

「使用2.0,您可以改用ASPNETCORE_ENVIRONMENT環境變量 」。

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

現在我已經嘗試了所有種類的方式,但是當我用EF核心2.0運行update-database它鴕鳥政策使用ASPNETCORE_ENVIRONMENT變量。我試圖在註冊表中設置應用程序屬性。

請讓我知道我需要做些什麼來使這個工作更新不同的環境?

如果我用不同的lanchsettings啓動應用程序,它可以工作,但不使用包管理器控制檯。

+0

在執行命令之前,嘗試'設置ASPNETCORE_ENVIRONMENT = EnvironmentName'。 –

+0

你使用PowerShell提示嗎?您需要使用'$ env:ASPNETCORE_ENVIRONMENT ='EnvironmentName'' – bricelam

+0

我試過了,我在Visual Studio的PM控制檯中設置了ASPNETCORE_ENVIRONMENT = Production,但它不使用它只是使用默認開發的環境。 – joakimja

回答

1

在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

+0

當我將所有內容升級到核心2.0時,遇到了同樣的問題。 @bricelam響應適用於我(儘管我更喜歡舊方法),並且我在此發佈了相同的問題和響應:https://github.com/aspnet/EntityFrameworkCore/issues/9664 –

+0

試圖對「開發」環境。我遇到了同樣的問題,但無法使用上述解決方案。我有appsettings.json和appsettings.development.json(每個都有不同的db連接字符串)。上述方法在cmd或包管理器中不起作用。配置在應用程序本身的兩個環境中正確選取。會喜歡任何見解! – BenjiFB

+0

發生什麼事情是,從設置ASPNETCORE_ENVIRONMENT讀取環境。在cmd中運行更新數據庫之前,請使用「echo%ASPNETCORE_ENVIRONMENT%」檢查指向的環境。當deepinsight檢查你的startup.cs和行。 .AddJsonFile($「appsettings。{env.EnvironmentName} .json」,可選:true) – joakimja

3

設置在軟件包管理控制檯(PMC)的ASPNETCORE_ENVIRONMENT變量,在Visual Studio中,以生產使用此命令第一

$env:ASPNETCORE_ENVIRONMENT='Production' 

然後你可以使用

Update-Database 

正常。

+0

謝謝!它爲我工作。 – maxwell