我首先使用EF代码和asp.net MVC。这是我的技术堆栈。
在我的迁移文件夹中,我可以看到存在三个迁移文件。
当我检查我的数据库时,我可以看到_MigrationHistory
表已应用了所有三个迁移。现在我又添加了一个DbSet,我想为它编写迁移。当我试图给出这个命令时
Add-Migration NewTable
它给了我这个错误:
无法生成显式迁移,因为以下显式迁移正在等待处理:[201402121621095_AddStandardException,201402190713571_DocumentScope]。在尝试生成新的显式迁移之前应用挂起的显式迁移。
我不明白为什么它会抱怨待迁移,而所有迁移都已应用?
我该如何解决这个问题?我尝试使用-Debug
切换但没有运气。
答案 0 :(得分:0)
我找到了解决方法。我刚刚在Up()和Down()函数中注释了代码。然后运行Update-Database。它应用了一些虚拟迁移,然后报告了
无法更新数据库以匹配当前模型,因为有 挂起的更改和自动迁移已禁用。要么写 待定模型更改为基于代码的迁移或启用自动 移民。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为 如果启用自动迁移,则为true。
此后我跑
添加迁移NewTable
它给了我正确的结果。有什么想法在这里发生吗?
答案 1 :(得分:-2)
解释:" update-database"在" add-migration"通过制作不同模型更改的快照,就像git一样工作。这些快照显示了数据库随时间的演变情况,因此它们对代码用户比EF或App本身更有用。
话虽这么说,你的新课程可能有一个完全不同的代码签名,可能不会流动#34;与现有的班级
解决方案:修改或删除以前的迁移,因为新迁移将创建一个不会使用或不需要它们的新数据结构