1

我有一个 Entity Framework 5 DB-First 项目,我们刚刚从 TFS 迁移到 Git。在 TFS 中,我们使用 RedGate 的 SQL 源代码控制使数据库保持最新状态,这是一种不错的做事方式,假设每个人都在开发主干,因为分支非常困难,所以几乎每个人都在使用最新版本的数据库架构。

但是,现在我们在 Git 上,我希望 db 更改成为功能分支的一部分。由于 Git 允许如此轻松地从一个分支跳转到另一个分支,我希望开发人员可以从包括 db 更改在内的功能跳转到没有这些更改的功能。代码更新得很好——但是数据库呢?我怀疑 RedGate 的产品是否会在如此快速的时间内处理上下迁移 - 还是我错了?如果 RedGate 无法处理这些上下迁移,那么在我的代码中正确的做法是什么?

顺便说一句,我确实搜索了其他类似的问题,并找到了这个,尽管答案是将迁移脚本包含在功能分支中。对于“向上”迁移来说这一切都很好,但是如果我在一个分支中编写一个特性,那么我会切换到另一个分支来对其他人的拉取请求进行代码审查,然后我对我的我分支中的本地数据库应该以某种方式恢复。但是怎么做?

更新: RedGate 通过向我推荐这篇文章来回应支持电话。基本上,如果你想切换分支,你必须从源代码管理中取消链接/重新链接你的数据库。而且您不能创建或合并分支。简而言之,呃。有更好的建议吗?

4

2 回答 2

1

迄今为止我发现的最佳解决方案来自 RedGate - 他们的Migrations V2 Beta。您可以在每个分支中进行提交,当您在分支之间切换时,您可以在 DB 选项卡上“获取最新”,以将本地 DB 更新为适用于该分支的 db 架构。

它适用于 80% 的情况,但它(还)不是一个完美的解决方案

  • 如果您在迁移之前将分支切换到架构的先前版本,则无法运行“向下”脚本。
  • 当您启用 FILESTREAM 时,系统会出现一些问题。我已经向他们的技术支持报告了这个问题,他们已经承认了这个错误,所以希望这会很快得到解决。

基本上,它被称为“Beta”是有原因的。

无论如何,我现在将此标记为解决方案,但如果有人提出更好的想法,让我们听听。

于 2015-05-07T07:09:24.873 回答
0

确实是一个乏味的问题。我目前为每个主要分支(开发、发布和增强)使用单独的文件夹,这迫使我执行以下操作

  • 每个主要分支的数据库
  • 每个主要分支都配置为连接到相应的数据库。一般用于单元测试和开发
  • 还为每个分支配置了 Web 服务器。例如http://localhost/develop

由于配置文件,合并有点乏味,但到目前为止,这种技术已经工作了几年。

于 2017-02-08T04:04:03.503 回答