I use visual studio to update all my environments with a certain migration. It had worked fine using the command below.
update-database -Migration initMigrat
I had the same problem like the reporter of this issue and tried out the recent solution in the Package Manager Console (PMC) and set the environment variable with the command:
$env:ASPNETCORE_ENVIRONMENT='YOUR_ENVIRONMENT'
Unfortunetly I have a ConsoleApplication and use the generic host builder on startup with Host.CreateDefaultBuilder()
. In this scenario the environment variable prefix is not ASPNETCORE_
but DOTNET_
.
For me this command works in PMC:
$env:DOTNET_ENVIRONMENT='YOUR_ENVIRONMENT'
I want to thank Martin Florin and others to guide me in the correct direction.
According to EntityFrameworkCore#6846 the correct solution is to use the --environment
option, the dotnet ef
commands do not respect ASPNETCORE_ENVIRONMENT
dotnet ef database update --environment Production
To set the ASPNETCORE_ENVIRONMENT variable in Package Manager Console (PMC) , inside visual studio, to Production use this command first
$env:ASPNETCORE_ENVIRONMENT='Production'
Then you can use
Update-Database
normally.
Using the package manager in Visual Studio was a dead end for me. The solution was:
Add below in .csproj in the starter project in solution:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
Open the command tool(cmd) and go the the same folder as .csproj for start project are located(Default project).
Run the command as Anton Toshik suggested set ASPNETCORE_ENVIRONMENT=Production
4.Then run the command dotnet ef database update initMigrationProduct -c ProductContext
And now it works.
REMARK: in this command database
and update
have changed place since earlier versions. And there are no argument/code for migration. The docs explain more after this clarification:
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet