我已经认真思考过这个问题,希望我能对此处呈现的不同观点和实践做出贡献。
在本地使用开发数据库时,添加列、添加新实体等操作时,我使用迁移以最方便的方式来更新数据库。因此,Add-Migration 会将“我的”当前模型(称为模型 b)与“我的”先前模型(模型 a)进行比较,并生成一个从 a 到 b 的迁移,用于更新数据库。
对我来说,如果每个人都有自己的数据库,并且组织中存在某些阶段/测试/开发/生产数据库服务器,则尝试合并我的迁移与其他人的迁移就没有多少意义。这都取决于团队的设置方式,但是,如果您想真正以分布式的方式工作,那么让彼此隔离变更是有意义的。
如果您以分布式方式工作,并且有一些实体(例如 Person)在进行处理。由于某种原因,还有很多其他人也在处理它。因此,您根据需要添加和删除 Person 上的属性,以适应 sprint 中的特定故事,例如社保号码,您首先将其转换为整数,因为您并不聪明,然后再转换为字符串等。
您添加 FirstName 和 LastName。
然后您完成了,并且您有十个奇怪的上下迁移(您可能在工作过程中删除了其中一些,因为它们只是垃圾),然后从中央 Git 存储库中获取了一些更改。哇。您的同事 Bob 也需要一些姓名,也许您应该互相交流一下?
无论如何,他已添加了 NameFirst 和 NameLast,我猜...那么你怎么办?好吧,您合并、重构和更改,以使其具有更合理的名称,例如 FirstName 和 LastName,然后运行测试并检查他的代码,然后将其推送到中央存储库。
但是迁移怎么办?好吧,现在就是时候制作一个迁移,将中心存储库或“测试”分支转移,包含从其模型 a 到模型 b 的一个不多不少的迁移。这个迁移只会有一个,而不是十个奇怪的迁移。
看到我的意思了吗?我们正在使用漂亮的小 POCO,对它们进行比较构成了实际的迁移。因此,在我看来,我们根本不需要合并迁移,而是应该每个分支都有自己的迁移。
实际上,在合并后的分支中是否需要创建迁移呢?是的,如果此数据库会自动更新,则需要。
我还需要更多的工作,至少这是我的想法。
add-migration the-full-name-of-the-migration-that-was-merged-from-branch-b
,它将替换B迁移中的基本状态以匹配分支A中的最后一次迁移。您不应该创建新的迁移。 - oldwizard