首页 > 解决方案 > 在团队源代码管理中处理实体框架代码优先迁移

问题描述

我目前在一个使用 Entity Framework 6.1.3 作为主要对象关系映射 (ORM) 框架的团队中工作。

大多数时候它工作得很好,但是当两个或多个不同的团队成员添加迁移时问题就开始了,然后应该合并这些迁移。

来自微软的例子:

在此处输入图像描述

为了保持model snapshot最新,我们通常Add a blank 'merge' migration会更新快照。来自 PMC:

Add-Migration "Fix merge" –IgnoreChanges 

我们当然可以,update the model snapshot in the last migration但是由于我们使用拉取请求并验证彼此的代码,因此通常可能有两个未决的迁移,但它们都没有被添加到master分支中,因为它们没有经过审查。

然而,考虑到空白迁移,我们在这里也遇到了问题。示例:两个迁移已同步到 master 并且模型快照不同步。开发人员对数据库模型进行了一些更改,然后与 master 进行了合并。开发人员需要添加空白合并才能同步模型快照。使用的问题–IgnoreChanges是即使开发人员对其分支中的模型进行了一些更改,迁移也将是空白的。如果–IgnoreChanges不使用,那么新迁移的每个更改也会显示出来,并且可能会导致异常,因为代码将被添加两次。

https://msdn.microsoft.com/en-us/library/dn481501(v=vs.113).aspx

有没有其他方法可以在代码中解决这个问题?现在,我们正在提醒 Slack 中的迁移以在拉取请求中给予它们优先级,但这远非最佳流程。鉴于我一直在阅读的内容,我认为这是不可能的,但我很乐意被证明是错误的。鉴于我们今天使用的拉取请求流程,在上次迁移中更新模型快照并不总是适合我们。

标签: c#gitentity-frameworkentity-framework-6

解决方案


推荐阅读