Ну, я пытаюсь отменить миграцию базы данных, просто добавив столбец, см .:
public partial class CreateColumnTypeCamera : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "type",
table: "CAMERA",
type: "varchar",
nullable: false,
defaultValue: "");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "type",
table: "CAMERA");
}
}
После выполнения dotnet ef database update
все работает нормально, и моя база данных обновляется. Но я хочу отменить его, поэтому я попытался dotnet ef database update CreateColumnTypeCamera
:
[ronaldo@localhost WebApi]$ dotnet ef database update CreateColumnTypeCamera
Done.
Как вы можете видеть, я получил "Готово", но ничего не возвращено, столбец не был отброшен. Если я пытаюсь удалить свою миграцию, я получаю сообщение об ошибке:
[ronaldo@localhost WebApi]$ dotnet ef migrations remove
The migration '20200329134024_CreateColumnTypeCamera' 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.
Редактировать 1:
Я применил команду «update» к «LastGoodMigration» вместо моего плохого миграция, и все работает отлично. Но ошибка в удалении продолжения, поэтому я заметил, что из-за этой строки:
if (Database.ProviderName != "Microsoft.EntityFrameworkCore.InMemory")
{
Database.Migrate();
}
Есть ли способ исправить это? Если я попытаюсь применить «ef remove» к этой строке, я получу ошибку, показанную выше.