我正在阅读EF迁移并开始玩它。
我使用Git进行源代码控制,每次开始处理新功能时,我都会创建一个分支。原因是如果我需要快速跳转到另一个功能,或者做一个需要推出的重要错误修正,我可以改变分支并继续工作。
目前,我的应用程序已设置好,如果我不在生产环境(web.config appsetting)中,则会对数据库进行核对,并在数据模型更改(代码优先)时重新设置它。我认为迁移会很好,因为我不需要在最轻微的模型变化上完全掌握我的数据。
不幸的是,我看到一些迹象表明它不像我希望的版本控制友好。例如,如果我向数据模型添加新列,更新数据库,然后决定还原我的更改,EF仍然知道模型更改,因为它将它们存储在数据库本身中。
似乎没有干净的方法告诉它在分支第一次发生时降级db版本,然后迁移到db在分支上的地方我决定在没有很多记忆和手册的情况下工作跟踪。
是否有人制定了如何在版权控制的非平凡开发方案中利用迁移的策略?
答案 0 :(得分:3)
因为每个分支都包含其他人明显无法知道的迁移,所以它无法知道如何将数据库转换为匹配(不使用自动迁移,我怀疑无论如何都可以正常运行)。
支持不同分支的最佳策略是为每个分支定位它自己的数据库副本,具体取决于我们所讨论的分支数量。通过这种方式,您可以随心所欲地在它们之间跳转,并且只有在进行更改/合并时才会触及自己的数据库。
或者确保您的核心数据是迁移脚本的一部分,并像现在一样将数据库吹走。
编辑:合并分支之间的更改后,您可能需要使用add-migration命令重新生成元数据。