EF6: Rollback to a previous migration

EF6 migrations/rollbacks are performed with the ef6.exe tool.

This tool is available inside the Entity Framework nuget package, e.g.

~\packages\EntityFramework.6.4.4\tools\net45\any\ef6.exe

You might want to copy that tools folder to the server from which you need to run the script.

.\ef6.exe database update --assembly "PATH\TO\YOUR_DB_Context_DB.dll" --config "Path\To\Your\Connection\String\Containing\Web.config" --target Migration_To_Roll_Back_To --force -v

You will see output like this:

Specify the '-Verbose' flag to view the SQL statements being applied to the target database.

(It always says that even when you did specify a migration!)

Target database is: 'YOUR_DB' (DataSource: YOUR_DB_SERVER, Provider: System.Data.SqlClient, Origin: Configuration).

And for each migration being rolled back you'll see the result of running the 'down' function, as well as removing the migration itself from [dbo].[__MigrationHistory]

Reverting migrations: [202106211412384_Migration_After_The_One_Your_Targeting].
Reverting explicit migration: 202106211412384_Migration_After_The_One_Your_Targeting.
DELETE [dbo].[__MigrationHistory]
WHERE (([MigrationId] = N'202106211412384_Migration_After_The_One_Your_Targeting') AND ([ContextKey] = N'Your_DbContext'))