EF: Automatische Migrationen werden ausgeführt, wenn sie deaktiviert sind

9

Ich versuche, die Datenbank auf einem Build-Server zu aktualisieren, und sie schlägt fehl, weil sie versucht, automatische Migrationen auszuführen, obwohl sie deaktiviert sind. Die Datenbank existiert bereits und ich muss nur die letzte Migration anwenden. Hier ist mein Kontext:

%Vor%

Ich habe eine Reihe von Migrationsdateien, die ich manuell erstellt habe, hier ist die neueste:

%Vor%

Wenn ich die Datenbank manuell von der Paketmanagerkonsole aus aktualisiere, sehe ich, dass versucht wird, eine automatische Migration auszuführen (was fehlschlägt, weil die Tabelle bereits existiert):

%Vor%

Meine __MigrationHistory-Tabelle hat nur den einen Eintrag für die Ersteinstellung. Wie kann ich verhindern, dass die automatischen Migrationen durchgeführt werden?

    
Matt Roberts 07.01.2013, 09:25
quelle

1 Antwort

5

Schaut euch die Antwort von jjslagace hier an:

Update-Database versucht es Führen Sie eine automatische Migration durch, auch wenn automatische Migrationen deaktiviert sind

Sie erstellen Ihre Migrationen manuell. Meine Vermutung ist, Entity-Framework möchte etwas hinzufügen, das Sie nicht in Ihrem Migrationsskript haben, oder es Spalten anders benennen möchte usw. EF hat ein Gehirn, und dieses Gehirn ist ziemlich einfach. Es wird erwartet, dass die Dinge auf eine bestimmte Art und Weise ablaufen, es sei denn, Sie sagen es anders, indem Sie fließend verwenden (nicht durch manuelle Erstellung / Anpassung von Migrationsdateien). Aus der Antwort auf die Frage oben klingt es manchmal, dass das Problem, das Sie sehen, ist.

Lange Rede, kurzer Sinn: Erstellen Sie die Migrationsdateien nicht manuell. Führen Sie stattdessen den Befehl add-migrations aus. Dadurch wird die Migration für Sie erstellt und Sie können sehen, was EF erwartet, bevor es auf Ihre Datenbank angewendet wird (weil es manchmal dumm ist). Wenn Sie überschreiben müssen, was EF für Sie generiert, fügen Sie in Ihrer DBContext-Klasse eine fließende Zuordnung hinzu, indem Sie OnModelCreating überschreiben. Führen Sie dann Add-Migration erneut mit der Option -force aus. Hier finden Sie eine gute Referenz zur Verwendung der Fluent-API , um EF-Mappings anzupassen. Spülen und wiederholen, bis Sie die gewünschte Migration erhalten dann update-database ausführen.

Hoffe das hilft!

    
Ben Tidman 07.01.2013, 12:59
quelle