Search code examples
c#.net-corevisual-studio-2017entity-framework-core

ef core doesn't use ASPNETCORE_ENVIRONMENT during update-database


I use visual studio to update all my environments with a certain migration. It had worked fine using the command below.

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

In ef core 2.0 this command has been changed and parameter -Environment has been removed. In the docs it said.

"With 2.0, you can use the ASPNETCORE_ENVIRONMENT environment variable instead."

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

I have now tried all kinds of ways but when I run the update-database with ef core 2.0 it doesn't use the ASPNETCORE_ENVIRONMENT variable. I tried to set in registry, application properties.

Please let me know what I need to do to get this working to update different environments?

If I start the application with different launchsettings it works but not using the package manager console.


Solution

  • Using the package manager in Visual Studio was a dead end for me. The solution was:

    1. Add below in .csproj in the starter project in solution:

      <ItemGroup>
          <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
      </ItemGroup>
      
    2. Open the command tool(cmd) and go the the same folder as .csproj for start project are located(Default project).

    3. 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://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet