Tuesday, 29 September 2015

Generate Entity Framework update scripts from migrations

This is how you generate Entity Framework update scripts from migrations.

Note: this is a very simplified post that doesn't generate a very complicated database script.

So you already have an initial database migration in your project. If you don't go Google how to get started.

I'll start by generating an SQL script for my initial migration.

Here is part of my initial migration in C#:

I will now generate the script for this but running this command in the Package Manager Console:
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: Initial

Make sure you select the correct Default Project in the dropdown shown in the above picture.

Here is the SQL script:

Now I will update my model with a new property:

I then ran the following to create my new C# migration:
Add-Migration AddedAProperty -StartUpProjectName User.DbResourceAccess

Which created this new C# file:

Next I will run this:
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: AddedAProperty
Which created the following script:

You could then apply this to a production database for example.
I'm not sure you would want to insert into a __MigrationHistory table on production though.