This is a simple EFCore database in a .NETCore 3.1 app that has 3 migrations
"init" Initial migration
"gcalg500" Added seeding data and tables
"valtt" Added more seeding data and tables
The most recent one is still checked out in working code. But after I made it and ran a few times, I realized I wanted to undo it, make more changes and apply it again. so I tried remove-migration
from the package manager console. The error returned was
The migration '20200507181032_valtt' has already been applied to the database. Revert it
and try again. If the migration has been applied to other databases, consider reverting its
changes using a new migration.
A bit of searching here brought me to this thread which says that the solution is to update-database
to the previous migration and then remove-migration. So I tried that but apparently there is an issue with the SQLite provider won't let me do it. The package manager console output is as follows:
PM> update-database gcalg500
Build started...
Build succeeded.
Reverting migration '20200507181032_valtt'.
System.NotSupportedException: SQLite does not support this migration operation ('DropColumnOperation'). For more information, see http://go.microsoft.com/fwlink/?LinkId=723262.
at Microsoft.EntityFrameworkCore.Migrations.SqliteMigrationsSqlGenerator.Generate(DropColumnOperation operation, IModel model, MigrationCommandListBuilder builder, Boolean terminate)
at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.<>c.<.cctor>b__71_12(MigrationsSqlGenerator g, MigrationOperation o, IModel m, MigrationCommandListBuilder b)
at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder)
at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model)
at Microsoft.EntityFrameworkCore.Migrations.SqliteMigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateDownSql(Migration migration, Migration previousMigration)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c__DisplayClass15_1.<GetMigrationCommandLists>b__1()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
SQLite does not support this migration operation ('DropColumnOperation'). For more information, see http://go.microsoft.com/fwlink/?LinkId=723262.
OK, so I can't take that approach. So what do I do? Is there some manual way I can fix this? I have the SQLite Compact Toolbox extension so I could edit the SQLite database directly if it can be done that way.
(I realize I might be able to just apply yet another migration on top of the one I've already made but I very much would like to avoid that scenario for unrelated reasons. Besides, this is an issue that might come up again so if there's a way to do this, I'd like to learn it)