In Entity Framework 6 I'm using the Update-Database command to apply migrations. I've got three environments that I juggle (DEV, QA and PROD), and upgrade them using
Update-Database -ConnectionStringName DEV
But, now I'd like to know which migration my PROD environment is at, and which migrations willl be applied if I call Update-Database.
Is there a command for checking which migration is the latest one applied, and which will be applied if I run Update-Database?
To see which migrations have been applied to the database use the command
Get-Migrations -ConnectionStringName PROD
You can also check the contents of the table
__MigrationsHistory in the right database. It contains info about all migrations applied to the database.
The next migration applied depends on the existing migration files in your project. A migration file name includes a prefix that is a timestamp, which specifies the time at which the migration file was generated (unless you used the
-force parameter that might cause to reuse an existing migration file keeping its existing timestamp string). The migrations are applied according to that timestamp. So the alphabetical ordering of your migration files indicates the order in which they are applied.
A safe way to check which migration will be applied next is to run
Update-Database with the
-Script parameter, which generates the SQL script for the migration but does not run it. So you can see which migration would be applied if you run the real
Update: in Entity Framework Core this command is not available. You can still check
__MigrationsHistory table contents. To generate the SQL script that would be executed without running it you can use the command