【发布时间】:2021-12-02 01:25:36
【问题描述】:
尝试在我的一个模型中删除两列并添加新列(已删除和新列之间没有关系),但生成的迁移重命名了已删除列之一。由于已删除的列包含生产中的数据,因此必须将其删除而不是重命名。
有没有办法解决这个问题,以便生成的迁移删除并创建而不是重命名?
模型中的变量:
public DateTime? PublishedAt { get; private set; }
public bool? IsValidated { get; private set; }
public States? States { get; private set; } // Added
public Invites? Invites { get; private set; } // Removed
public string Info { get; private set; } // Removed
生成的迁移:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Info",
table: "Articles");
migrationBuilder.RenameColumn(
name: "Invites",
table: "Articles",
newName: "States");
}
【问题讨论】:
-
解决这个问题的一种方法是分两个阶段进行模型更改,以便您成为两个迁移。一个迁移用于删除列,另一个迁移用于添加新字段。您还可以手动操作迁移,以便它删除两个列并添加一个新列。如果您选择后一种方法,最好在 Down() 方法中也进行反向更改。
标签: entity-framework .net-core