我对此进行了一些思考,我希望我能为这里提出的不同观点和实践做出贡献。
考虑一下您的本地迁移实际代表什么。在本地使用开发数据库时,我在向表中添加列等、添加新实体等时,使用迁移以最方便的方式更新数据库。
因此,Add-Migration 将我当前的模型(我们称之为模型 b)与我之前的模型(模型 a)进行对比,并生成从数据库中的 a => b 开始的迁移。
对我来说,如果每个人都确实拥有自己的数据库并且组织中存在某种阶段/测试/开发/生产数据库服务器,那么尝试将我的迁移与其他任何人的迁移合并是没有意义的。这一切都取决于团队是如何设置的,但是如果您想真正以分布式方式工作,那么将彼此与其他人所做的更改隔离开来是有意义的。
好吧,如果你在分布式工作并且有一些实体,例如,你工作的人。出于某种原因,许多其他人也在研究它。因此,您可以根据 sprint 中特定故事的需要添加和删除 Person 上的属性(我们在这里都在灵活地工作,不是吗?),例如您首先将社会安全号码转换为整数,因为您不是那个明亮,然后到一个字符串等。
您添加名字和姓氏。
然后你就完成了,你有十个奇怪的上下迁移(你可能在工作时删除了其中一些,因为它们只是垃圾),你从中央 Git 存储库获取一些更改。哇。你的同事鲍勃也需要一些名字,也许你们应该互相谈谈?
无论如何,他已经添加了 NameFirst 和 NameLast,我猜……那你怎么办?好吧,您合并、重构、更改,使其具有更合理的名称……例如 FirstName 和 LastName,您运行测试并检查他的代码,然后推送到中央。
但是迁移呢?好吧,现在是时候进行迁移中央仓库了,或者更具体地说,分支“测试”包含从其模型 a => 模型 b 的一个不错的小迁移。这次迁移将是一次且只有一次迁移,而不是十次奇怪的迁移。
你明白我在说什么吗?我们正在使用漂亮的小 pocos,它们的比较构成了实际的迁移。所以,我们根本不应该合并迁移,在我看来,我们应该有每个分支的迁移或类似的东西。
事实上,我们甚至需要在合并之后在分支中创建迁移吗?是的,如果这个数据库是自动更新的,我们需要。
必须再努力一些,至少这些是我对此的想法。