在开发过程中正确处理迁移的方法

时间:2018-08-02 11:47:29

标签: asp.net-core ef-code-first entity-framework-core ef-migrations

当模型不是最终形式或关系仍然存在某些不一致时,如何在开发过程中正确处理迁移?

  • 在git之类的版本控制系统中,应将迁移更多地视为提交,甚至代表最小的更改吗?

  • 我应该为模型中的每个小更改添加新的迁移,还是应该重新创建数据库并进行初始迁移,直到对模型的外观满意为止?最后,我仍然可以删除所有这些迁移,并创建初始迁移以清理这些小的迁移。

  • 如何正确命名迁移?通常,我无法拿出好名字,而给他们一些无意义的名字,例如X1,X2,X3

类似的问题:

How to deal with database changes during development with EF Core?

1 个答案:

答案 0 :(得分:1)

1:我个人会将其保留为历史。当然,您总是可以删除所有迁移,并创建一个包含所有迁移的迁移,但可以想象一下,在添加100 ++表(实体类型)之后,当您只有一个迁移数据库时,您不能确保您的生产数据库正在更新,迁移时,只需重新创建相同的名称即可。

2:是的,您确实应该进行少量迁移。您可以通过将数据库更新为特定的迁移,然后逐步删除所有其他迁移来撤消迁移。至少可以使用package-manager-console tool(也许也可以使用dotnet工具)。

例如,您已经添加了具有已更改模型的迁移,则可以使用以下命令返回到旧迁移:

Update-Database -Migration MyMigrationBeforeBadModelMigration

请注意,如果您要撤消的迁移中添加了某些表,则可能会删除表。

然后逐步删除不良迁移

Remove-Migration // will always remove the latest migration so repeat that if you have many to remove

然后只需创建新的正确迁移并更新您的数据库即可。

3:是的,给他们起适当的名字。例如 CustomerEntityAdded CustomerUniqueNameIndexAdded