wake-up-neo.com

EF Core-Migrationen im Docker-Container

Ich richte ein WebApi in .NET Core 2.0 ein. Ich werde Entity Framework Core als ORM verwenden. Die gesamte App wird als Docker Container bereitgestellt. Was mich ein bisschen stört, ist die Art und Weise, wie DB-Migrationen in diesem Fall gehandhabt werden. Ich meine Produktionsumgebung. Folgendes konnte ich recherchieren:

  • Wir feuern einfach Database.Migrate () in der App und vergessen die ganze Welt - hmm, irgendwie gefällt es mir nicht ;-)
  • Database.Migrate () wird von einem Befehlszeilenparameter gesteuert (Führen Sie den Docker-Container einmal mit einem angegebenen Parameter aus, um die Datenbank zu migrieren).
  • Loggen Sie sich in den Anwendungscontainer ein und führen Sie dotnet ef database update
  • Generieren Sie einfaches altes SQL auf der Basis von Migrationen und führen Sie es über das DB-Management-Tool aus. Scheint oldschool aber gültig. Ich hasse es, selbst Skripte auszuführen.
  • Bereiten Sie einen Datenbankcontainer vor, für den bereits Skripts aus dem obigen Code generiert und der sie automatisch ausführt.

Irgendwelche anderen Vorschläge ? Oder was ist die beste und am besten geeignete Lösung?

Grüße

34
user1658223

meiner Meinung nach ist es Ihr erster Punkt (Database.Migrate () due startup), der hauptsächlich unserem Anwendungsfall entspricht. Für mich ist dies derzeit die bevorzugte Methode.

Wir haben einige zusätzliche Konstellationen im Startprozess:

  • Docker-Container nur lokal (für Entwicklungsumgebung und Tests sicher)
  • Eigenes Startprojekt, das den Database.Migrate () - Teil ausführt (weil wir mehr als ein Projekt mit einer eigenen Datenbank haben)
  • Zusätzliches Projekt mit der aktuellen API-Website :)
  • Produktionsumgebung mit Azure SQL Server (Veröffentlicht und bereitgestellt über die Azure DevOps-Pipeline

  • Migrationen werden in einem eigenen Projekt über ...

    bei dotnet ef-Migrationen wird der Pfad "Ihr Migrationsname" - startup-project "zu Ihrer aktuellen API hinzugefügt." --context "Datenbankkontextname"

Wichtig: Sie müssen zuerst das Arbeitsverzeichnis in das Migrationsprojekt ändern, um ein anderes Startprojekt zu verwenden, aber die Migrationsdateien im "Migrationsprojekt" generieren.

In unserem Fall funktioniert es problemlos mit verschiedenen APIs mit eigenen Datenbanken hinter der Szene.

Grüße

1
Leonhard