sql – 实体框架迁移 – 分支管理

前端之家收集整理的这篇文章主要介绍了sql – 实体框架迁移 – 分支管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用Entity Framework代码进行一段时间的首次迁移,并且在应用程序的主干版本上一直运行良好.

不过,现在我们正在创建一个分支机构,因为我们有多个工作流.作为最后一批工作的一部分,我们意识到在分支机构中使用迁移可能是有问题的 – 所以我的问题是人们发现管理这个的最佳方法是什么?

例如(为了讨论,我已经明确地简化了这些):

分行A:
Developer 1添加了一个“Add-UserDateCreated”迁移,它向User实体添加一个字段.迁移文件包含添加该字段的代码,并且具有当时的模型状态.

分行B:
开发人员2添加了一个“Add-UserMiddleName”迁移,它向User实体添加了另一个字段.迁移文件包含添加字段的代码,并且具有当前的模型状态(但是显然没有在其他迁移中添加该字段).

这些迁移在他们的分支上工作正常,但是当您将它们合并到主干中时,您会卡住:

>您不能只保留各个迁移文件,因为存储的模型状态将不正确.例如,“Add-UserMiddleName”迁移应该具有添加了“Add-UserDateCreated”字段的模型的状态,但不会.
>您遇到同样的问题时,无法将迁移合并到一个文件中*

这意味着真正避免这些问题的唯一方法是在每个分支的数据库的不同副本上工作,当您将合并到中继线时忽略迁移,并且在合并完成时添加一次性主机迁移(on数据库的中继版本) – 但是您可能在一次迁移中可能会遇到很多变化,这绝不是一个好主意(也会丢失您在迁移类中编写的任何自定义代码).

那么其他人如何管理这种情况呢?我很想知道别人的意见.

*我很好奇,如果有人知道,这真的会在现实世界中造成什么问题?

解决方法

当您在分支机构工作并需要迁移时,您总是需要考虑其他(活动)分支的状态.例如,如果在分支上没有trunk的迁移,则应在创建新的迁移之前将它们合并到分支.一旦您在分支上创建迁移,可能是将其合并回中继线的一个好主意.

所以在你的例子中,开发人员A和B需要相互沟通.开发人员B意识到需要进行迁移,应该在创建“中间用户名”迁移之前检查其他迁移是否已经完成并将其合并到她的分支.

我发现将迁移视为整个团队的死锁(如果这样对你有意义)是有用的.)在日常架构中应该提到新的迁移或创建计划的计划.有时,当事情忙碌时,将所有迁移列表保存在白板上可供所有团队成员查看.

我也发现迁移很小,至关重要,使得他们在分支机构之间轻松便携.

还应该注意的是,它有助于使用一个良好的分支,合并和樱桃采集的版本控制系统,例如Git.

猜你在找的MsSQL相关文章