实体框架迁移问题。 [无法生成显式迁移,因为以下显式迁移正在等待]

时间:2014-02-26 08:39:21

标签: asp.net-mvc entity-framework

我首先使用EF代码和asp.net MVC。这是我的技术堆栈。

  1. Visual Studio 2010
  2. 实体框架4.3.1
  3. 在我的迁移文件夹中,我可以看到存在三个迁移文件。

    1. InitialCreate
    2. AddStandardException
    3. DocumentScope
    4. 当我检查我的数据库时,我可以看到_MigrationHistory表已应用了所有三个迁移。现在我又添加了一个DbSet,我想为它编写迁移。当我试图给出这个命令时

      Add-Migration NewTable
      

      它给了我这个错误:

        

      无法生成显式迁移,因为以下显式迁移正在等待处理:[201402121621095_AddStandardException,201402190713571_DocumentScope]。在尝试生成新的显式迁移之前应用挂起的显式迁移。

      我不明白为什么它会抱怨待迁移,而所有迁移都已应用?

      我该如何解决这个问题?我尝试使用-Debug切换但没有运气。

2 个答案:

答案 0 :(得分:0)

我找到了解决方法。我刚刚在Up()和Down()函数中注释了代码。然后运行Update-Database。它应用了一些虚拟迁移,然后报告了

  

无法更新数据库以匹配当前模型,因为有   挂起的更改和自动迁移已禁用。要么写   待定模型更改为基于代码的迁移或启用自动   移民。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为   如果启用自动迁移,则为true。

此后我跑

添加迁移NewTable

它给了我正确的结果。有什么想法在这里发生吗?

答案 1 :(得分:-2)

解释:" update-database"在" add-migration"通过制作不同模型更改的快照,就像git一样工作。这些快照显示了数据库随时间的演变情况,因此它们对代码用户比EF或App本身更有用。
话虽这么说,你的新课程可能有一个完全不同的代码签名,可能不会流动#34;与现有的班级 解决方案:修改或删除以前的迁移,因为新迁移将创建一个不会使用或不需要它们的新数据结构