PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Mise à jour de la base de données postgreSQL via les migrations EFCore dans Azure DevOps

J'ai enfin pu le réparer.

Il y a deux solutions que j'ai trouvées pour résoudre le problème.

  1. Tout d'abord, il existe un correctif commun pour toutes les bases de données qui prennent en charge les migrations d'Entity Framework :
    • Utiliser un .NET Core Tâche, nous devrons installer l'outil dotnet ef :La tâche ressemblerait à ceci :

Et ce serait le YAML (au cas où vous voudriez l'utiliser en dehors du pipeline de publication) :

 - task: [email protected]
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: tool
    arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
  • Et une fois que nous aurons installé les outils requis, avec un CMD ou un Bash Tâche, nous devrons exécuter un script comme celui-ci :
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build

Il vous suffit d'ajouter le drapeau -c au cas où vous auriez plus d'un contexte dans votre projet (parfois les autres DbContexts peuvent provenir de certains packages de nuggets).

Remarquez que j'ai ajouté le drapeau --no-build puisque j'ai déjà construit le projet dans le pipeline de construction pour suivre les bonnes pratiques.

  1. L'autre option (et celle que j'ai finalement utilisée), c'est d'utiliser cette tâche qui fait essentiellement le même processus, à la différence qu'il le fait en utilisant votre .dll déjà compilé fichiers, vous n'aurez donc pas à copier l'intégralité du projet pour que les migrations fonctionnent. La configuration de la tâche, bien que vous deviez remplir de nombreuses entrées, est assez simple et est censée fonctionner également avec d'autres bases de données.

Cependant, si je devais utiliser SQL Server ou MySQL J'utiliserais un script de migration, car le processus est beaucoup plus simple (il suffit de générer un .sql script et c'est le seul fichier requis pour déployer les migrations).