我有一个Entity Framework 5 DB-First项目,我们刚刚从TFS迁移到Git。在TFS中,我们使用RedGate的SQL Source Control保持数据库最新,这是一种很好的做事方式,假设每个人都在开发干线,因为分支是如此困难,所以几乎每个人都在努力最新版本的数据库架构。
然而,现在我们依赖Git,我希望db更改成为功能分支的一部分。由于Git允许从分支到分支的这种简单跳转,我希望开发人员可以从包括数据库更改在内的功能跳转到没有这些更改的功能。代码更新得很好 - 但是DB呢?我怀疑RedGate的产品是否会在这样的闪光中处理上下迁移 - 或者我错了?如果RedGate无法处理上下迁移,那么在我的代码中执行此操作的正确方法是什么?
BTW,我确实搜索了其他类似的问题,并找到this one,但答案是在功能分支中包含迁移脚本。对于" up"这一切都非常好。迁移,但是,如果我在一个分支中编写一个功能,那么我切换到另一个分支对其他人的拉取请求进行代码审查,然后我对我的本地数据库所做的更改我的分支应该以某种方式恢复。但是如何?
更新:RedGate通过引荐我this article来回复支持电话。基本上,如果要切换分支,则必须取消链接/重新链接数据库与源代码管理。而且您无法创建或合并分支。总之,呃。还有更好的建议吗?
答案 0 :(得分:1)
到目前为止,我发现的最佳解决方案来自RedGate - 他们的Migrations V2 Beta。您可以在每个分支中进行提交,当您在分支机构之间切换时,您可以获得最新的"在“数据库”选项卡上,将本地数据库更新为适用于该分支的数据库模式。
80%的情况都适用,但它还不是一个完美的解决方案
基本上,这就是为什么它被称为" Beta"。
无论如何,我现在将此标记为解决方案,但如果有人提出更好的想法,请听听。
答案 1 :(得分:0)
确实是一个乏味的问题。我目前正在为每个主要分支(开发,发布和增强)使用单独的文件夹,这迫使我执行以下操作
由于配置文件的合并有点单调乏味,但到目前为止,这种技术已经运行了几年。