2

我刚刚开始研究如何使用 EF 迁移,但已经遇到了问题。让我们假设两个开发人员使用一个解决方案,但他们在不同的时区。

  1. Dev1 使用名称“201307151309449_7.cs”创建基于代码的迁移并提交它。
  2. Dev2 在另一个时区(-3 小时),他从源代码管理中获取最新版本。
  3. Dev2 执行“更新数据库”命令。在这一步中,Dev2 与 Dev1 具有相同的 DB 结构。
  4. Dev2 进行了一些更改并创建了名为“201307151010092_8.cs”的迁移。

带有“_7”前缀的迁移早于“_8”创建,但 Visual Studio 存储“201307151010092_8”迁移就像它是首先创建的一样。因此,基于代码的迁移 '201307151010092_8' 不会包含 Dev2 为自己所做的任何更改(方法 'Up' 和 'Down' 是空的,我不知道为什么会这样)。

有人可以向我解释如何在这种情况下(不同时区)使用 EF 迁移吗?

4

1 回答 1

0

这听起来像一个 EF 错误,如果它确实仍然存在于 EF6 中,则应将其报告为问题。

我能想到的一种解决方法可以通过一些协调来应用。那就是让 Dev2 删除“201307151309449_7”迁移,然后生成他们的新迁移,并让它包含他们自己的更改和 Dev1 的更改。Dev1 和 Dev2(可能还有其他人)需要确保他们通过 update-database -TargetMigration 将数据库恢复到“201307151309449_7”之前的状态。

另一个明显的解决方法是让 Dev2 等待 3 小时!

于 2013-12-01T13:46:08.950 回答