PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Aktualisieren der PostgreSQL-Datenbank durch EFCore-Migrationen in Azure DevOps

Ich muss es endlich reparieren.

Es gibt zwei Lösungen, die ich gefunden habe, um das Problem zu beheben.

  1. Erstens gibt es eine allgemeine Lösung für alle Datenbanken, die Entity Framework-Migrationen unterstützen :
    • Mit einem .NET Core Aufgabe, wir müssen das dotnet ef tool installieren :Die Aufgabe würde so aussehen:

Und dies wäre das YAML (falls Sie es außerhalb der Release-Pipeline verwenden möchten):

 - task: [email protected]
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: tool
    arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
  • Und sobald wir die erforderlichen Tools installiert haben, mit einer CMD oder ein Bash Aufgabe, wir müssen ein Skript wie dieses ausführen:
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build

Sie müssen nur das Flag -c hinzufügen falls Sie mehr als einen Kontext in Ihrem Projekt haben (manchmal können die anderen DbContexts aus einigen Nugget-Paketen stammen).

Beachten Sie, dass ich das Flag --no-build hinzugefügt habe da ich das Projekt bereits in der Build-Pipeline erstellt habe, um bewährten Verfahren zu folgen.

  1. Die andere Option (und die, die ich schließlich verwendet habe) war die Verwendung von diese Aufgabe Das macht im Grunde den gleichen Prozess, mit dem Unterschied, dass es Ihre bereits kompilierte .dll verwendet Dateien, sodass Sie nicht das gesamte Projekt kopieren müssen, damit die Migrationen funktionieren. Die Einrichtung der Aufgabe ist, obwohl Sie viele Eingaben machen müssen, ziemlich einfach und soll auch mit anderen Datenbanken funktionieren.

Wenn ich jedoch SQL Server verwenden müsste oder MySQL Ich würde ein Migrationsskript verwenden, da der Prozess viel einfacher ist (Sie müssen nur eine .sql generieren -Skript und dann ist es die einzige Datei, die zum Bereitstellen der Migrationen erforderlich ist).