entity-frameworkmigration

Entity framework migrations - generate sql script of current database model


I am trying to generate sql script that will create a database for me. So far I tried this:

Update-Database -Script -SourceMigration: $InitialDatabase
Update-Database -Script -SourceMigration:0

But both of those are giving me scripts that are beggining from first migration to last. And there is no initial state of database, which should include creation of the database itself, and single table that was there when I added migrations to my project.

So how do I recreate my model now, when migrations aren't giving me full sql script?


Solution

  • Try:

    Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: [MigrationName]
    

    That should include the script from the initial database to the migration targeted. At the very least should have the "MigrationHistory" table.

    You can also try recreating your migrations by:

    1) Reverting back to the initial database. If everything goes well, this should remove all the tables from your database.

    Update-Database -TargetMigration: $InitialDatabase
    

    2) Delete all your migration file inside the Migrations folder. You don't have to delete the configuration class file.

    3) Add a new migration. However, this would create a migration file from the initial database to your latest model.

    Add-Migration -Name: [MigrationName]
    

    Hopefully this helps. I also suggest looking at this blog post. Take note of tip #5 which is "Never delete a Migration before backing it out (Down)". In my experience this causes issues with migration if not followed.