2016-08-03 53 views
0

Ich habe ein Entity Framework 6 Code-First-Projekt. Ich habe meine Datenbank gelöscht und möchte sie von Grund auf neu erstellen. Wenn ich update-database ausführe, laufen einige der Migrationen nicht. Das verursacht später einen Fehler, da sich die Datenbank nicht in dem erwarteten Status befindet.EF 6 Code-erste Migrationen übersprungen

Dies ist die erste Migration, die übersprungen wird:

using System.Data.Entity.Migrations; 

public partial class add_ConversationEntry_Type : DbMigration 
{ 
    public override void Up() 
    { 
     AddColumn("dbo.ConversationEntry", "Type", c => c.String(nullable: false)); 
    } 

    public override void Down() 
    { 
     DropColumn("dbo.ConversationEntry", "Type"); 
    } 
} 

Es Standard sieht. Es erbt von DbMigration und macht nichts Seltsames. Die nächsten 3 werden auch übersprungen und sie alle beeinflussen diese Tabelle dbo.ConversationEntry.

Mit update-date-base -verbose zeigt es "Explizite Migrationen anwenden:" und listet die Migrationen auf und diese fehlen in dieser Liste.

Ich habe überprüft, dass diese auch in der Projektdatei sind. Woher erhält Update-Datenbank die Liste der Migrationen? Warum sollten einige übersprungen werden?

Antwort

0

Das Beste, was in diesem Szenario zu tun, ist ein idempotent Skript aller Migrationen zu erstellen und sehen, was Entity Framework zu tun versucht:

update-database –SourceMigration $InitialDatabase -Script 

Diese haben sollte alles benötigt, um die Datenbank zu erstellen, die __MigrationHistory-Tabelle und um Ihre Migrationen nacheinander anzuwenden.

Wenn alle anderen Datenbanken, die Ihnen wichtig sind, auf dem neuesten Stand sind, können Sie die Migrationen einfach zurücksetzen. Eine weitere Option wäre, den Initialisierer auf createdatabaseifnotexists zu stellen, wodurch eine neue Datenbank basierend auf Ihrem Modell erstellt wird.

0

Jede Entity Framework Migration besteht aus drei Dateien

  • Entitätsklasse .cs

und zusätzliche Code-Behind-Dateien

  • Metadatendatei .Designer.cs
  • Datenbankmodell Snapshot .resx

Stellen Sie sicher, <timestamp>_dd_ConversationEntry_Type.Designer.cs Datei fehlt nicht und ist in Ihrem Projekt enthalten.