Réinitialiser Les Migrations Entity-Framework

j'ai brouillé mes migrations, j'ai utilisé IgnoreChanges sur la migration initiale, mais maintenant je veux supprimer toutes mes migrations et commencer par une migration initiale avec toute la logique.

quand je supprime les migrations dans le dossier et que j'essaie Add-Migration , cela ne génère pas de fichier complet (c'est vide - parce que je n'ai pas fait de changements depuis ma dernière migration, mais maintenant supprimé, migration).

Est-il un Désactiver les Migrations commande, donc je peux relire Enable-Migrations ?

265
demandé sur shA.t 2012-07-27 03:15:46

10 réponses

Vous avez besoin de :

  1. Supprimer l'état: supprimer le dossier migrations dans votre projet; et
  2. supprimer la table __MigrationHistory dans votre base de données (peut être sous tables système); puis
  3. exécuter la commande suivante dans la Console du Gestionnaire de paquets:

    Enable-Migrations -EnableAutomaticMigrations -Force
    

    à utiliser avec ou sans -EnableAutomaticMigrations

  4. Et enfin, vous pouvez exécuter:

    Add-Migration Initial
    
407
répondu Todd 2015-11-30 23:04:30

Le Problème: Vous avez jeté votre migrations et vous souhaitez le réinitialiser sans supprimer vos tables existantes.

le problème: vous ne pouvez pas réinitialiser les migrations avec les tables existantes dans la base de données car EF veut créer les tables à partir de zéro.

Que faire?

  1. supprimer les migrations existantes du tableau Migrations_histoire.

  2. Supprimer migrations existantes à partir du dossier Migrations.

  3. Exécuter en complément de la migration de Réinitialisation. Cela créera une migration dans votre dossier de Migration qui inclut la création des tables (mais il ne l'exécutera pas de sorte qu'il ne fera pas d'erreur.)

  4. vous devez maintenant créer la ligne initiale dans la table MigrationHistory afin que EF ait un instantané de l'état actuel. EF le fera si vous effectuez une migration. Cependant, vous ne pouvez pas appliquez la migration que vous venez de faire car les tables existent déjà dans votre base de données. Alors allez dans la Migration et commentez tout le code à l'intérieur de la méthode" Up".

  5. Lancez maintenant update-database. Il appliquera la Migration (tout en ne changeant pas réellement la base de données) et créera une ligne de snapshot dans MigrationHistory.

vous avez maintenant réinitialisé vos migrations et pouvez continuer avec des migrations normales.

132
répondu Greg0 2014-03-28 18:07:29

Que Diriez-vous de

Update-Database –TargetMigration: $InitialDatabase

dans la Console du Gestionnaire de paquets? Il devrait réinitialiser toutes les mises à jour à leur état initial.

lien de Référence: le Premier Code Migrations la Migration vers une Version Spécifique (y Compris le Déclassement)

26
répondu Chris Voon 2014-04-03 16:39:17

pour corriger cela, vous devez:

  1. supprimer tous *.fichiers cs dans le dossier Migrations.

  2. supprimer le _migrationhistory Table dans la base de données

  3. Exécuter Enable-Migrations -EnableAutomaticMigrations -Force

  4. Exécuter Add-Migration Reset

ensuite, dans la classe public partial class Reset : DbMigration , vous devez commentaire de tous les existants et les Tables:

public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}

Si vous manquez de ce peu tous échouera et vous devez recommencer!

  1. Maintenant Exécuter Update-Database -verbose

cela devrait être réussi si vous avez fait ce qui précède correctement, et maintenant vous pouvez continuer comme d'habitude.

13
répondu Rusty Nail 2017-03-14 09:12:41

mon problème s'est avéré être que j'ai enlevé manuellement le dossier Migrations. J'ai fait ça parce que je voulais sauvegarder le contenu, donc j'ai simplement sorti le dossier du projet. J'ai ensuite corrigé le problème en le replaçant (après avoir fait une copie de sauvegarde), puis en retirant le dossier Migrations en cliquant avec le bouton droit de la souris dans Solutions Explorer et en choisissant Delete dans le menu contextuel.

2
répondu user1738579 2013-08-24 13:39:01

dans Entitefram Framework 6 Veuillez essayer:

Add-Migration Initial

afin de mettre à jour le fichier de migration initial.

2
répondu Asaf 2015-10-21 11:17:55

dans EF6

  1. supprimez tous vos fichiers dans le dossier "migrations"... Mais pas la "création initiale" ou la "configuration".
  2. supprimer la base de données.
  3. maintenant, Lancez Add-Migration Initial .
  4. Maintenant vous pouvez 'update-database' et tout ira bien.
1
répondu adudley 2015-11-30 14:55:03

Dans Le Cadre De L'Entité De Base.

  1. supprimer tous les fichiers du dossier migrations.
  2. Type de console

dotnet ef base de données drop -f -v

dotnet ef migrations ajouter Initiale

dotnet ef base de données mise à jour

0
répondu Восилей 2018-08-05 08:34:55

considérant que ceci apparaît toujours lorsque nous cherchons EF dans .NET Core, je vais poster ma réponse ici (car il m'a beaucoup hanté). Notez qu'il y a quelques subtilités avec la version EF 6 .NET (pas de commande initiale, et vous devrez supprimer les fichiers "Snapshot")

(testé dans le cœur net 2.1)

Voici les étapes:

  1. supprimer le tableau _efmigrationhistory .
  2. recherchez la totalité de votre solution pour les fichiers qui contiennent Snapshot dans leur nom, tels que ApplicationDbContextSnapshot.cs , et supprimer eux.
  3. Exécuter Add-Migration InitialMigration

s'il vous Plaît note: vous devez supprimer tous les fichiers D'instantané . J'ai passé des heures innombrables à supprimer la base de données... Cela générera une migration vide si vous ne le faites pas.

aussi, dans #3 vous pouvez juste nommer votre migration comme vous voulez.

Voici quelques ressources supplémentaires: asp.net migration du cœur générée vide

Reset Entity Framework 7 migrations

0
répondu Jose A 2018-09-25 22:52:11
Enable-Migrations -EnableAutomaticMigrations -Force
-2
répondu Debendra Dash 2016-08-13 09:50:28