在开发过程中使用迁移的正确方法
Proper way to work with migrations during development
当模型不是最终形式或关系仍然存在一些不一致时,如何在开发过程中正确使用迁移?
迁移是否应该像 git 那样在版本控制系统中更多地被视为提交并代表最小的更改,或者什么?
我应该为模型中的每个小更改添加新的迁移,还是应该重新创建数据库和初始迁移,直到我对模型的外观感到满意为止?我仍然可以在最后删除所有这些迁移并创建初始迁移来清理这些小迁移。
如何正确命名迁移?大多数时候我想不出一个好名字,我给他们一些毫无意义的名字,比如 X1、X2、X3
类似问题:
How to deal with database changes during development with EF Core?
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.
当模型不是最终形式或关系仍然存在一些不一致时,如何在开发过程中正确使用迁移?
迁移是否应该像 git 那样在版本控制系统中更多地被视为提交并代表最小的更改,或者什么?
我应该为模型中的每个小更改添加新的迁移,还是应该重新创建数据库和初始迁移,直到我对模型的外观感到满意为止?我仍然可以在最后删除所有这些迁移并创建初始迁移来清理这些小迁移。
如何正确命名迁移?大多数时候我想不出一个好名字,我给他们一些毫无意义的名字,比如 X1、X2、X3
类似问题:
How to deal with database changes during development with EF Core?
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.