En Azure DevOps, la forma en que solía actualizar la base de datos de SQL Server era con Entity Framework Core, usando dos tareas:
El caso es que ahora que estoy usando una base de datos PostgreSQL , no puedo encontrar una manera fácil y limpia de actualizar la base de datos de la misma manera. He visto que hay otra tarea para MySQL que hace exactamente lo mismo que hizo mi tarea de canalización de versión con SQL Server, pero nada para PostgreSQL.
Así que pensé que básicamente podría ejecutar la base de datos de dotnet ef update database (con las opciones adecuadas configuradas) en la tubería, pero me preguntaba si realmente hay una manera de seguir actualizando la base de datos sin problemas como lo hice antes.
Finalmente pude arreglarlo.
Hay dos soluciones que encontré para solucionar el problema.
Y este sería el YAML (en caso de que quiera usarlo fuera de la tubería de lanzamiento):
- task: DotNetCoreCLI@2 displayName: 'dotnet custom' inputs: command: custom custom: tool arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources' dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-buildSolo tiene que agregar el indicador -c en caso de que tenga más de un contexto en su proyecto (a veces, los otros DbContexts pueden provenir de algunos paquetes nugget).
Tenga en cuenta que agregué el indicador --no-build porque ya construí el proyecto en la canalización de compilación para seguir las buenas prácticas.
Sin embargo, si tuviera que usar SQL Server o MySQL , usaría un script de migraciones, ya que el proceso es mucho más fácil (solo necesita generar un script .sql y luego es el único archivo requerido para implementar las migraciones).