PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Aggiornamento del DB postgreSQL tramite migrazioni EFCore in Azure DevOps

Finalmente sono riuscito a risolverlo.

Ci sono due soluzioni che ho trovato per risolvere il problema.

  1. In primo luogo, esiste una correzione comune per tutti i database che supportano Migrazioni di Entity Framework :
    • Utilizzo di .NET Core Compito, dovremo installare lo strumento dotnet ef :L'attività sarebbe simile a questa:

E questo sarebbe YAML (nel caso tu voglia usarlo fuori dalla pipeline di rilascio):

 - task: [email protected]
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: tool
    arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
  • E una volta installati gli strumenti necessari, con un CMD o un Bash Compito, dovremo eseguire uno script come questo:
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build

Devi solo aggiungere il flag -c nel caso in cui tu abbia più di un contesto nel tuo progetto (a volte gli altri DbContext possono provenire da alcuni pacchetti nugget).

Nota che ho aggiunto il flag --no-build poiché ho già creato il progetto nella pipeline di compilazione per seguire le buone pratiche.

  1. L'altra opzione (e quella che alla fine ho usato) è stata quella di utilizzare questo compito che fondamentalmente fa lo stesso processo, con la differenza che lo fa usando il tuo .dll già compilato file, quindi non dovrai copiare l'intero progetto per far funzionare le migrazioni. L'impostazione dell'attività, anche se devi riempire molti input, è piuttosto semplice e dovrebbe funzionare anche con altri database.

Tuttavia, se dovessi usare SQL Server o MySQL Userei uno script di migrazione, poiché il processo è molto più semplice (devi solo generare un .sql script e quindi è l'unico file richiesto per la distribuzione delle migrazioni).