Это простая база данных EFCore в приложении .NETCore 3.1, имеющая 3 миграции
"init" Initial migration
"gcalg500" Added seeding data and tables
"valtt" Added more seeding data and tables
Самая последняя из них все еще проверена в рабочем коде. Но после того, как я сделал это и запустил несколько раз, я понял, что хочу отменить это, внести больше изменений и применить снова. поэтому я попробовал remove-migration
из консоли диспетчера пакетов. Возвращенная ошибка была
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.
Небольшой поиск здесь привел меня к этому потоку , в котором говорится, что решение - update-database
к предыдущей миграции и затем удаление-миграция. Итак, я попробовал это, но, очевидно, проблема с поставщиком SQLite не позволяет мне это сделать. Вывод консоли диспетчера пакетов выглядит следующим образом:
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.
Хорошо, поэтому я не могу использовать этот подход. Так что же мне делать? Есть ли какой-нибудь ручной способ исправить это? У меня есть расширение SQLite Compact Toolbox, поэтому я могу напрямую редактировать базу данных SQLite, если это можно сделать таким образом.
(Я понимаю, что могу просто применить еще одну миграцию поверх той, что у меня есть уже сделано, но я бы очень хотел избежать этого сценария по не связанным причинам. Кроме того, это проблема, которая может возникнуть снова, поэтому, если есть способ сделать это, я бы хотел изучить его)