EF 迁移忽略数据更改

EF migrations ignore data changes

我有一个初始数据库迁移。现在我需要创建第一个增量迁移。当我使用

创建第一个增量迁移时
add-migration Incremental1

它不仅包含 table 更改,还包含所有数据更改。例如,对于添加到 table 之间的行,它包含 DeleteData 命令:

migrationBuilder.DeleteData(
            table: "SystemResources",
            keyColumn: "Id",
            keyValue: 1);

是否有一些设置只生成 table 变化(added/removed 列)并忽略所有数据变化(插入的数据行)?

解决方法是:

  1. 通过注释掉所有 modelBuilder.Entity<T>().HasData 语句来禁用数据播种,
  2. 使用 add-migration
  3. 创建增量迁移
  4. 从增量迁移中手动删除所有 DeleteData / InsertData 命令,
  5. 运行 update-database.

在此之后,种子数据不再是模型快照(<Database>ModelSnapshot.cs 文件)的一部分,因此不再被迁移跟踪。

这也意味着下一次增量迁移将不包含任何 DeleteData / InsertData 语句。