web-dev-qa-db-fra.com

ne pas utiliser ASPNETCORE_ENVIRONMENT lors de la mise à jour de la base de données

J'utilise Visual Studio pour mettre à jour tous mes environnements avec une certaine migration. Cela a bien fonctionné en utilisant la commande ci-dessous.

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

Dans ef core 2.0, cette commande a été modifiée et le paramètre -Environment a été supprimé. dans docs il a dit.

"Avec la version 2.0, vous pouvez utiliser la variable d’environnement ASPNETCORE_ENVIRONMENT À la place."

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

J'ai maintenant essayé toutes sortes de méthodes, mais lorsque je lance le update-database avec ef core 2.0, il n'utilise pas la variable ASPNETCORE_ENVIRONMENT. J'ai essayé de définir dans le registre, les propriétés de l'application. 

S'il vous plaît laissez-moi savoir ce que je dois faire pour que cela fonctionne avec la mise à jour des environnements différents?

Si je lance l'application avec différents réglages de lanchs, cela fonctionne, mais pas avec la console du gestionnaire de paquets.

18
joakimja

Utiliser le gestionnaire de paquets dans Visual Studio était une impasse pour moi ... La solution était:

  1. Ajouter ci-dessous dans .csproj dans le projet de démarrage en solution:

    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    </ItemGroup>
    
  2. Ouvrez l'outil de commande (cmd) et allez dans le même dossier que le fichier .csproj pour démarrer le projet (projet par défaut).

  3. Exécutez la commande comme Anton Toshik a suggéré set ASPNETCORE_ENVIRONMENT=Production

4.Ensuite, exécutez la commande dotnet ef database update initMigrationProduct -c ProductContext Et maintenant, cela fonctionne.

REMARQUE: dans cette commande, database et update ont changé de place depuis les versions précédentes. Et il n'y a pas d'argument/code pour la migration. Les docs expliquent plus après cette clarification: 
https://docs.Microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

1
joakimja

Pour définir la variable ASPNETCORE_ENVIRONMENT dans la console PMC (Package Manager Console), dans Visual Studio, sur Production, utilisez d'abord cette commande

$env:ASPNETCORE_ENVIRONMENT='Production'

Ensuite, vous pouvez utiliser

Update-Database

normalement.

29
Martin Florin

Selon EntityFrameworkCore # 6846 la solution correcte consiste à utiliser l'option --environment, les commandes dotnet ef ne respectant pas ASPNETCORE_ENVIRONMENT

dotnet ef database update --environment Production
2
The Mighty Chris