web-dev-qa-db-fra.com

L'objet de migration EF existe déjà erreur

Je travaille sur un projet ASP.NET MVC avec Entity Framework avec le code d'abord de la base de données. Je reçois les modèles pour chaque table de la base de données. J'ai apporté des modifications aux modèles, activé les migrations et lors de l'initiation de la migration, une erreur s'est produite:

Il existe déjà un objet nommé 'Nom de table' dans la base de données. "

J'ai essayé avec update-database -force mais je n'ai pas aidé. La migration initiale crée les tables existantes!

Comment faire en sorte que la migration initiale applique les modifications apportées aux modèles sans créer les tables à partir du début?

Et quelle est la meilleure pratique pour synchroniser les modifications entre la base de données et les modèles dans ce cas?

8
Arianit

essayer de courir le 

Add-Migration InitialCreate –IgnoreChanges 

commande dans Package Manager Console. Cela crée une migration vide avec le modèle actuel en tant qu'instantané. puis exécutez le 

Update-Database 

commande dans Package Manager Console. Ceci appliquera la migration InitialCreate à la base de données. Dans la mesure où la migration proprement dite ne contient aucune modification, il suffit d'ajouter une ligne à la table __MigrationsHistory, indiquant que cette migration a déjà été appliquée.

voir this

puis changez vos modèles et ajoutez la migration.

une autre approche consiste à simplement commenter tout le code sur des méthodes de haut en bas

18
Amr Alaa

Pour moi, le mieux est de commenter tout le code dans les fonctions UP et Down du fichier de migration initial, puis de le déclencher dotnet ef database update, cela devrait fonctionner correctement, assurez-vous de mettre à jour la migration avant de commenter la migration initiale

2
Danish Shaikh

La solution Amr Alaa fonctionne, mais la base de données n'a pas migré vers le dernier modèle.

Voici comment cela a fonctionné (en utilisant la migration automatique): 

  1. Supprimer le dossier Migrations 
  2. Exécuter enable-migrations
  3. Définissez ces deux propriétés sur true dans le fichier Configuration.cs nouvellement créé.

    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
    
  4. Execute Update-Database -Force

Votre base de données sera mise à jour au dernier schéma et prête.

j'espère que cela t'aides.

1
Chtiwi Malek