web-dev-qa-db-fra.com

Impossible d'activer les migrations pour Entity Framework sur VS 2017 .NET Core

Je viens d'installer VS 2017 et j'ai créé un nouveau projet Core. À l'intérieur, j'ai ajouté:

  • Microsoft.EntityFrameworkCore (1.1.0)
  • Microsoft.NETCore.App (1.1.0)

J'ai également créé un dossier appelé Modèles avec une classe. Ensuite, je suis allé dans la console du gestionnaire de packages et ai exécuté enable-migrations afin que VS crée les fichiers nécessaires à ma création. Cependant, au lieu des fichiers nécessaires, j'ai eu l'erreur suivante.

Le terme 'enable-migration' n'est pas reconnu comme le nom d'une applet de commande, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom ou, si un chemin a été inclus, vérifiez que le chemin est correct et essayez à nouveau.

Qu'est-ce que je suis censé faire ici?

Je semble être hors de la chance googler. C'est une combinaison très inhabituelle (Core VS17 et EF) donc il n'y a pratiquement aucune information sur le sujet. Certains guides parlent d'édition de package.json à la main, ce qui est un peu difficile, car VS 2017 semble mettre à niveau le Core pour que dotnet restore ne le cherche pas, mais plutôt un xxx.csproj .

En résumé, je suis confus et incertain quant à la manière de résoudre le problème.

9
Konrad Viltersten

EF Core n'a plus la commande Enable-Migrations. Les migrations sont activées "par défaut". Ajouter une nouvelle migration avec Add-Migration

Documentation sur les commandes du gestionnaire de paquets est ici

11
Dmitry

Comme d'autres l'ont déjà mentionné, l'activation des migrations est obsolète et est activée de toute façon. Vous pouvez utiliser la méthode Add-Migration InitialCreate. 

J'ajouterai que vous devez NOT ajouter d'autres packages au projet, car il fera déjà référence aux assemblys nécessaires dans le métapaquet Microsoft.AspNetCore.All. 

Vous pouvez également utiliser votre console (cmd/Shell en fonction de votre système d'exploitation) à la place de la console PM power Shell. Pour ce faire, vous devez ajouter une référence à l'outil dotnet: modifiez votre fichier de projet (cliquez dessus avec le bouton droit de la souris et sélectionnez "edit .csproj" - et ajoutez la référence suivante dans un groupe d'éléments:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0"></DotNetCliToolReference>

puis dans le type de console dotnet ef migrations add InitialCreate

Ajouter une migration dans .NET Core

CLI .NET Core

2
David Refaeli

J'ai eu un problème similaire avec Visual Studio 2017 et un projet importé de VS 2015, EF Migrations ne fonctionnait plus.

Après avoir lu la documentation sur GitHub: https://github.com/aspnet/EntityFramework/issues/7031

J'ai installé via Nuget ce paquet:

"Microsoft.EntityFrameworkCore"

Cela a entraîné un effet en cascade de plusieurs téléchargements/installations . Après l'installation et le redémarrage de VS 2017, tout est maintenant revenu à la normale.

Deux jours plus tard, avec un autre projet Visual Studio 2015, j'ai eu le même problème et je l'ai résolu en suivant la procédure ci-dessus, mais j'ai eu cette nouvelle erreur: 

"Règles de sécurité d'héritage enfreintes par le type: 'System.Net.Http.WebRequestHandler'. Les types dérivés doivent correspondre à l'accessibilité de sécurité du type de base ou être moins accessible."

J'ai résolu cette erreur en mettant à niveau le cadre de projet avec le dernier ".NET Framework 4.6.2" (Effrayant ... mais cela a fonctionné sans autre problème).

J'ai référé à cette documentation sur GitHub: https://github.com/dotnet/corefx/issues/11100

2
Alex

Je viens d'installer Microsoft.EntityFrameworkCore.Tools, puis j'ai essayé d'exécuter enable-migrations, puis j'ai reçu le message suivant dans VS2017:

Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.

J'espère que ça aide.

1
franco148

Résolu

  1. Faites un clic droit sur le projet, puis cliquez sur l'option: Gérer NuGet Package; Sous Parcourir, recherchez le module complémentaire EntityFramework, installez-le, puis redémarrez Visual Studio.
  2. Créez une classe MyDbContext qui hérite de DbContext.
  3. Dans Outils> Gestionnaire de paquets NuGet> Console du gestionnaire de paquets
  4. Activer les migrations
  5. add-migration InitialModel
0
Luisitox

allez dans Outils-> Gestionnaire de paquets NuGet-> Console du gestionnaire de paquets

écrire

install-package EntityFramework

puis 

enable-migrations

cette commande est exécutée pendant toute la durée de vie d'un projet, ce qui signifie que vous ne devez l'écrire qu'une fois dans un projet

0
A_Moeen