EF 迁移忽略数据更改
EF migrations ignore data changes
我有一个初始数据库迁移。现在我需要创建第一个增量迁移。当我使用
创建第一个增量迁移时
add-migration Incremental1
它不仅包含 table 更改,还包含所有数据更改。例如,对于添加到 table 之间的行,它包含 DeleteData
命令:
migrationBuilder.DeleteData(
table: "SystemResources",
keyColumn: "Id",
keyValue: 1);
是否有一些设置只生成 table 变化(added/removed 列)并忽略所有数据变化(插入的数据行)?
解决方法是:
- 通过注释掉所有
modelBuilder.Entity<T>().HasData
语句来禁用数据播种,
- 使用
add-migration
、 创建增量迁移
- 从增量迁移中手动删除所有
DeleteData
/ InsertData
命令,
- 运行
update-database
.
在此之后,种子数据不再是模型快照(<Database>ModelSnapshot.cs
文件)的一部分,因此不再被迁移跟踪。
这也意味着下一次增量迁移将不包含任何 DeleteData
/ InsertData
语句。
我有一个初始数据库迁移。现在我需要创建第一个增量迁移。当我使用
创建第一个增量迁移时add-migration Incremental1
它不仅包含 table 更改,还包含所有数据更改。例如,对于添加到 table 之间的行,它包含 DeleteData
命令:
migrationBuilder.DeleteData(
table: "SystemResources",
keyColumn: "Id",
keyValue: 1);
是否有一些设置只生成 table 变化(added/removed 列)并忽略所有数据变化(插入的数据行)?
解决方法是:
- 通过注释掉所有
modelBuilder.Entity<T>().HasData
语句来禁用数据播种, - 使用
add-migration
、 创建增量迁移
- 从增量迁移中手动删除所有
DeleteData
/InsertData
命令, - 运行
update-database
.
在此之后,种子数据不再是模型快照(<Database>ModelSnapshot.cs
文件)的一部分,因此不再被迁移跟踪。
这也意味着下一次增量迁移将不包含任何 DeleteData
/ InsertData
语句。