Migrationen in EF Core zurückrollen

Migrationen in EF Core zurückrollen

- Matt

Nach dotnet ef database update landet man meistens bei der neuesten Migration. Weniger bekannt: derselbe Befehl nimmt auch den Namen einer älteren Migration entgegen und rollt bis dahin zurück, dotnet ef database update AddCustomerTable etwa. EF Core führt dazu für jede dazwischenliegende Migration die Down()-Methode rückwärts aus. Für die komplette Rückkehr zum leeren Schema gibt es die Kurzform dotnet ef database update 0.

Der Haken: Down() ist nur so gut wie das, was beim Erstellen der Migration generiert oder von Hand nachgetragen wurde. Wurde eine Spalte per Skript umbenannt oder eine Migration nachträglich angepasst, ohne das Gegenstück in Down() zu pflegen, rollt der Befehl zwar durch, aber nicht dorthin, wo man es erwartet. Bei Datenverlust-Operationen wie DropColumn hilft vorher ein Blick in dotnet ef migrations script mit vertauschtem from und to, um zu sehen, welches SQL tatsächlich läuft, bevor es eine echte Datenbank trifft.

Quelle: Applying Migrations – EF Core