EntityFramework Code-basierte Migrationen, wie wird die Reihenfolge bestimmt?

8

Ich verwende EF 5.0 und möchte gerne Code-basierte Migrationen

Ich habe fluent migrator verwendet und es gibt ein Konzept der Migrationsreihenfolge. Migrationen können unabhängig von der Migrationsversion der Datenbank migriert / zurückgesetzt werden.

Hat Entity Framework ähnliche Funktionen?

Ich plante, mehrere Migrationsimplementierungen für jede Datenbankversion beizubehalten (wahrscheinlich zuerst mit der Sprintnummer verbunden).

Warum will ich das?

Unsere kontinuierliche Integration wird die Datenbank für jede Umgebung migrieren. Es ist wahrscheinlich, dass unsere Entwicklerversion nur eine Version "hinter" sein wird, aber wenn wir in die QA- oder PROD-Umgebung gehen, wird die Datenbank durch mehrere Migrationen zurückbleiben.

Vielleicht mache ich das in die falsche Richtung. In diesem Fall würde ich gerne Meinungen darüber hören, wie ich am besten CI mit Migrationen machen kann.

    
mswanson 06.03.2013, 16:44
quelle

1 Antwort

9

Ja EF hat diese Funktionalität.

Wenn Sie Add-Migration ausführen, werden Sie feststellen, dass der Migrationsdatei ein Zeitstempel vorangestellt ist. Dies bestimmt die Reihenfolge, vorausgesetzt, automatische Migrationen sind und wurden immer deaktiviert.

Wenn Sie eine Mischung aus expliziten Migrationen und automatischen Migrationen verwenden, bemerken Sie möglicherweise eine zusätzliche Source -Eigenschaft in der .resx -Datei, die mit Ihrer Migration generiert wurde. Auf diese Weise ermittelt EF, ob eine automatische Migration ausgeführt werden muss, bevor die explizite Migration ausgeführt wird.

Meine Erfahrung hat mich diese Richtlinien gelehrt:

1) Verwenden Sie niemals automatische Migrationen.

2) Jeder Entwickler in Ihrem Team sollte sicherstellen, dass er über den neuesten Code verfügt, bevor Sie eine neue explizite Migration erstellen. So etwas ist offensichtlich, aber das Erstellen von Migrationen aus veraltetem Code führt zu Problemen.

3) Entwickler sollten sicherstellen, dass sie beim Schreiben von benutzerdefiniertem SQL in der Up() -Methode der Migration entsprechenden Code schreiben (und testen!), um diese Änderungen in der Down() -Methode umzukehren.

    
Dave Graves 25.04.2013 21:51
quelle