【发布时间】:2020-07-09 21:52:10
【问题描述】:
好吧,我正在尝试恢复数据库迁移,只需添加一列,请参阅:
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:
我将“更新”命令应用于“LastGoodMigration”,而不是我的错误迁移,一切正常。但是remove中的错误继续,所以我注意到这是因为这一行:
if (Database.ProviderName != "Microsoft.EntityFrameworkCore.InMemory")
{
Database.Migrate();
}
有什么办法可以解决吗?如果我尝试使用此行应用“ef remove”,则会收到上面显示的错误。
【问题讨论】:
-
不满意,因为我使用的是 donet ef 工具而不是“包管理器”,在我的情况下,我只想回滚特定的迁移,我有这个名字。
-
重点是更新到previous迁移。并且“删除”从您的源代码中删除迁移,而不是从数据库中删除。所以这不是你想要的。
-
对不起,我没听懂。我应该在“CreateColumnTypeCamera”之前和删除它之后更新到迁移吗?我知道我需要删除对“CreateTypeCamera”的更新,并在删除它之后。
-
是的。先“更新”到 CreateColumnTypeCamera 之前的迁移。
标签: entity-framework .net-core entity-framework-migrations