如何告知EF Code First Migration系统数据库已更新

时间:2012-10-10 00:39:36

标签: c# entity-framework-4 ef-migrations

以下是我多次遇到的事件序列:

  • 手动向数据库添加列
  • 将属性添加到与列
  • 对应的DbContext
  • 生成迁移(因此可以签入,其他开发人员可以更新其数据库)

现在我处于无法使用上下文的状态,因为它提供了需要更新的错误。

但是,由于库存已经存在,更新会导致错误(重复列)。

所以我只是从根本上“做错了”,或者是否在包管理器中有一些命令说“我手动更新了我的数据库并且它现在是最新的”?

2 个答案:

答案 0 :(得分:2)

发生的事情是EF不知道您的迁移已经应用。

我所做的是在包管理器控制台中输入:

update-database -v -f -script

生成迁移脚本 - 然后我复制生成的sql中的最后一行,它将数据添加到__MigrationHistory表中,并手动执行。它看起来像这样:

enter image description here

这应该将您的代码与数据库同步。

答案 1 :(得分:0)

为了防止这种情况一次又一次地出现,您不应该在数据库中手动添加列,而是使用update-database来更新它。

正确的步骤应该是:

  • 将属性添加到与列
  • 对应的DbContext
  • 生成迁移
  • 运行update-database