【问题标题】:DBML/EDMX files and GITDBML/EDMX 文件和 GIT
【发布时间】:2017-10-03 16:12:11
【问题描述】:

我们首先使用 TFS GIT 和 linq2sql/entity 框架数据库时遇到问题。问题在于 edml.edmx 设计器和布局文件不断变化。合并这些文件的更改会导致多次冲突,如果管理不当,有时会导致数据丢失。

我意识到设计器和布局文件是用户特定的,但在 git 中不能忽略这些文件,因为它们是依赖文件。

是否有人对合并这些文件的良好做法有任何建议。

【问题讨论】:

  • 改用基于代码的解决方案!

标签: git entity-framework tfs linq-to-sql


【解决方案1】:

我知道这个问题有点陈旧,但目前与我相关。正如@ErikEJ 在评论中提到的那样,您可能应该考虑迁移到 EF Code First(或类似的东西)。

话虽如此,我们遇到了与您在上面提到的相同的问题。经过一番研究,这个问题(也偶尔会发生在 .csproj 文件中)似乎是 Git 的合并驱动程序的一个已知问题,显然没有引起任何关注。

这绝对保证比我想要的更多动手,尤其是对于这样一个笨重的文件。我们已经摆脱了重建模型,但是您必须检查更改的结果以确保您没有丢失任何东西。

另外,{插入无耻插件以使您的变更集尽可能小}

编辑:这里有一些进一步的阅读:https://haacked.com/archive/2014/04/16/csproj-merge-conflicts/如果你有兴趣。

编辑:我很幸运地使用了“耐心”差异算法来进行合并。它肯定会通过合并 XML 来清理。它仍然不是很漂亮或很棒,但您可能想试一试。

来自Git merge using recursive strategy and patience option,您可以拨打电话

git merge -s recursive -X patience other-branch

使用耐心算法执行合并。或者您可以简单地使用 --patience 标志进行比较。

最后,您可能希望对耐心算法做一些额外的阅读,或者自己比较合并冲突的输出。我发现我总体上更喜欢它,并将其添加到我的全局 .gitconfig 中。

如果您有兴趣,这里还有一些户外阅读。

The patience diff algorithm (external)

TIL: Diffing with Patience (external)

Git Source Code Review: Diff Algorithms (external) - 包含指向耐心算法作者的更多信息的链接,但我的公司代理目前阻止我去那里,所以我还没有阅读它们。

【讨论】:

  • 我们永远不会先使用代码。几十年来,我们一直在构建数据驱动的应用程序,并且我们首先对关系数据库进行建模。我们将在数据库中拥有由插入和更新触发的属性,以指示有界上下文之外的更改,甚至在应用程序层中“忽略”。一味说先写代码不是解决办法。
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 2011-01-20
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多