This would primarily be:
Really pleased to see this has been raised - looking forward to hearing more!
Copying the address of @johnnyreilly鈥檚 blog post here:
https://blog.johnnyreilly.com/2018/06/vsts-and-ef-core-migrations.html
Looking forward to "official" guidelines.
Until then, here's what I'm doing which i find to be a quite nice and straightforward solution without creating an additional console app:
DotNetCliToolReference to NuGetPackage Microsoft.EntityFrameworkCore.Tools.DotNetef with the following arguments: migrations script -p $(Build.SourcesDirectory)\Project\Project.csproj -o $(build.artifactstagingdirectory)\migrations\migrations.sql -iSQL Server Database Deploy task. I set the Sql File property as follows based on the path i provided in the Build task: $(System.DefaultWorkingDirectory)\**\Migrations\migrations.sqlThat's it - it's straightforward and works nicely, fits perfectly in a Continous Deployment scenario and allowing us to use a deployment user with all necessary rights to change database schemas - while during app runtime, I can run with a different user that has only datareader/datawriter rights.
There is just one drawback: The generated script does not create the database if it does not exist on the first deployment. So the DB has to be there and prepared - or, and that is what I have done, I added an additional SQL Server Database Deploy task with inline SQL to create the database if it does not exist.
I think it's an ok thing to do, but I'd love to have the possibility to optionally add create database SQL with dotnet ef script tooling.
I鈥檓 also looking forward to some good documentation about how to create database migrations in Azure Pipelines with ASP.NET Core. It was a lot of trial and error before I got it right.
That said, I wrote a little task to make this easier :-) I created Entity Framework Core Migrations Script Generator:
It takes care of the part of generating script, the hardest part according to me.
Most helpful comment
Looking forward to "official" guidelines.
Until then, here's what I'm doing which i find to be a quite nice and straightforward solution without creating an additional console app:
DotNetCliToolReferenceto NuGetPackageMicrosoft.EntityFrameworkCore.Tools.DotNetefwith the following arguments:migrations script -p $(Build.SourcesDirectory)\Project\Project.csproj -o $(build.artifactstagingdirectory)\migrations\migrations.sql -iSQL Server Database Deploytask. I set theSql Fileproperty as follows based on the path i provided in the Build task:$(System.DefaultWorkingDirectory)\**\Migrations\migrations.sqlThat's it - it's straightforward and works nicely, fits perfectly in a Continous Deployment scenario and allowing us to use a deployment user with all necessary rights to change database schemas - while during app runtime, I can run with a different user that has only datareader/datawriter rights.
There is just one drawback: The generated script does not create the database if it does not exist on the first deployment. So the DB has to be there and prepared - or, and that is what I have done, I added an additional
SQL Server Database Deploytask with inline SQL to create the database if it does not exist.I think it's an ok thing to do, but I'd love to have the possibility to optionally add create database SQL with
dotnet ef scripttooling.