2017-06-21 111 views
0

我们有一个运行实体框架6.1的项目,我们刚开始使用显式迁移(过去我们会使用自动迁移),我们遇到了以下情况。实体框架显式迁移

  1. 我创建了一个显式迁移来在字段上创建一些索引。我在一个单独的分支做这个。
  2. 我的一位同事也开始明确的迁移,在他自己的分支做一些其他的工作。

每个分支都经过代码审查,并在批准时合并到主分支中。 但现在我们注意到,我的显式迁移来创建索引,是在不同版本的模型上创建的。由于这是一个包含多个开发人员的项目,因此该模型一直在变化。因此,如果我们检查将生成哪些SQL代码来更新数据库,我们看到当我在分支上工作时添加的新列/表格/ ...被删除,然后我的索引被创建之后再次添加这些列。

我们该如何避免这种情况?我们在工作流程中做了什么错误?

回答

1

随着EF 6的每次迁移都有关于数据库最后状态的元数据。
在EFCore中,使用具有数据库快照的单独文件可以更好地完成这项工作。
下面是迁移在团队环境中一些好的做法:
https://msdn.microsoft.com/en-us/library/dn481501(v=vs.113).aspx
How to manage Migrations in a project with multiple branches?

现在你的情况是非常具体的,我不相信任何这些程序有其自动化解决方案。
我能想到的一种方法是让DB模型不在本地,而是在服务器上,并且每个开发人员都在创建迁移时指定目标。
但是在之前的博客中,共享数据库并不被认为是最佳实践。 你需要弄清楚一些混合程序来遵守每一条建议。 祝你好运...

+0

谢谢,我认为你的链接帮助我了! –