A data model changes during development and gets out of sync with the database. You can drop the database and let Entity Framework create a new one that matches the model, but this procedure results in the loss of data. The migrations feature in EF Core provides a way to incrementally update the database schema to keep it in sync with the application’s data model while preserving existing data in the database.
I am using a Task Group for this to keep it as general as possible to allow it ot be used across multiple projects.
My Task Group for the build is comprised of 3 steps, a restore of the solution, the build of the migrations and then a publish of the artifact:
My NuGet Restore step looks like this and also uses the Azure DevOps Artifacts Feed:
My Build EF Core Migrations step looks like this, more info can be found on these scripts here:
ef migrations script -v -i -o $(build.artifactstagingdirectory)\Migrations\$(Build.DefinitionName).sql –startup-project ../$(Build.DefinitionName).API
The final step takes the output of the previous step and publishes it to Azure Pipelines (Artifact Feed):
I use this artifact within a Release Pipeline after I deploy my Web App:
The settings for this look like this:
To give you an idea of the structure, the linked artifacts look like this. This has the app code and the sql script generated in our steps above in seperate folders. (The Deploy Azure App Service step above would just look at the “platform” folder:
Hope you find this post useful and it will help you to build your Infrastructure in Azure using Azure Devops & Entity Framework Core Migrations.
Any questions just get in touch via Twitter