实体框架迁移:“更新数据库”之后的待迁移

时间:2016-01-11 13:09:58

标签: entity-framework ef-code-first migration npgsql

我正在使用实体框架版本6.1.3和.NET Framework 4.0。

我正在尝试使用现有数据库中的Code-First迁移。 我遇到麻烦,无论何时我使用Update-Database它都会从我的迁移进行更改,并更改我的数据库,但它会将迁移保持为“待定”,并且当我尝试使用{{1}添加另一个迁移时它说我有待迁移。

问题示例:

  1. 从程序包管理器控制台运行Add-Migration命令。
  2. 运行Enable-Migrations命令以创建初始迁移。
  3. 删除初始迁移的Up()方法中的所有代码,因为我不想创建已存在的表。
  4. 运行Add-Migration first命令将初始迁移应用到我的数据库(它成功运行)。
  5. 更改我的代码优先模型(向现有表添加列)。
  6. 运行Update-Database命令以创建新的迁移。
  7. 当我运行第6步时,出现以下错误:

      

    由于以下显式迁移未决,因此无法生成显式迁移:[201601111013546_first]。在尝试生成新的显式迁移之前应用挂起的显式迁移。

    如果从我的Migrations文件夹中删除迁移“[201601111013546_first]”,我可以运行步骤6,并使用Add-Migration second,它成功更改了我的数据库,添加了我想要的列,但是如果我改变了我的模型再次使用Update-Database,它说同样的错误,第二次迁移仍然悬而未决。

    此外,如果不是步骤5和6,我只是再次运行Add-Migration third,它会运行相同的脚本,返回表dbo中已经有'MigrationId'的明显错误。“__ MigrationHistory”:

      

    错误:23505:重复键值违反了唯一约束“PK_dbo .__ MigrationHistory”

    我已经尝试过:

    • 创建一个新项目(ConsoleApplication)并采取相同的步骤来获得相同的错误。
    • 删除整个迁移文件夹并再次运行Update-Database
    • 验证Migration的名称空间及其.Designer文件。
    • 我只有一个connectionString,但仍尝试使用Enable-Migrations

    有什么建议吗?

    感谢。

0 个答案:

没有答案