Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 首先使用db时,如何管理不同分支中的db架构更改?_C#_Git_Entity Framework_Redgate_Db First - Fatal编程技术网

C# 首先使用db时,如何管理不同分支中的db架构更改?

C# 首先使用db时,如何管理不同分支中的db架构更改?,c#,git,entity-framework,redgate,db-first,C#,Git,Entity Framework,Redgate,Db First,我有一个Entity Framework 5 DB First项目,我们刚刚从TFS迁移到Git。在TFS中,我们使用RedGate的SQL源代码控制使DB保持最新,这是一种很好的方法,假设每个人都在开发非主干,因为分支非常困难,所以几乎每个人都在开发最新版本的DB模式 现在我们使用Git,但是,我希望db更改成为特性分支的一部分。由于Git允许如此轻松地从一个分支跳到另一个分支,我希望开发人员可以从包括db更改在内的特性跳到没有这些更改的特性。代码更新得很好,但是数据库呢?我怀疑RedGate

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

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

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


更新:RedGate通过向我推荐来响应支持电话。基本上,如果您想切换分支,您必须从源代码管理中取消db的链接/重新链接。您不能创建或合并分支。总之,呃。有更好的建议吗?

到目前为止,我找到的最好的解决方案来自RedGate——他们的。您可以在每个分支中进行提交,当您在分支之间切换时,您可以在DB选项卡上“获取最新信息”,以将本地DB更新为适用于该分支的DB模式

它在80%的情况下都能正常工作,但它不是一个完美的解决方案

  • 如果在迁移之前将分支切换到架构的早期版本,则无法运行“关闭”脚本
  • 当您启用FILESTREAM时,系统会出现一些错误。我已经向他们的技术支持报告了这一点,他们已经承认了这个错误,所以希望这将很快得到解决
基本上,它被称为“Beta”是有原因的


不管怎么说,我现在把它作为解决方案,但是如果有人想出更好的主意,让我们听听。

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

  • 每个主要分支的数据库
  • 每个主要分支都配置为连接到相应的数据库。一般用于单元测试和开发
  • 还为每个分支配置了Web服务器。例如
由于配置文件的原因,合并有点单调乏味,但到目前为止,这种技术已经工作了几年