我正在使用具有显式(非自动)代码优先迁移的 EntityFramework 6.0.2。我的模型已经很成熟了——我已经使用这个应用程序几个月了,并且添加了许多迁移。该应用程序使用 MVC5。
升级到 MVC5.1 后,我现在处于 VS 中的 EF 迁移工具看到模型与运行时不同的情况。运行Add-Migration
会创建一个空迁移,并Update-Migration
认为所有未完成的迁移都已应用。但是,当尝试启动该站点时,它会失败并显示AutomaticMigrationsDisabledException
:
无法更新数据库以匹配当前模型,因为存在待处理的更改并且自动迁移已禁用。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。
这似乎与我的模型类中的元素有关,这些元素同时具有[Required]
并[AllowHtml]
设置了它们。这些不是新属性,但我在更新到 MVC5.1 后创建的第一个显式迁移导致重新创建具有这两个属性的任何属性,而不是 NOT NULL。这是我开始注意到问题的时候,因为这是我无法再运行我的应用程序的时候。
我不想删除该[AllowHtml]
属性。我想找出为什么 Visual Studio 工具对模型的看法与运行时不同。我使用 MVC5.0 创建了一个简单的测试项目,将其升级到 5.1,但它没有显示相同的行为,所以我正在寻找关于在我的主项目中寻找可能会影响这一点的内容的指针。
还有另一个问题有类似的问题,但与 MVC5.1 无关,这表明这可能与某处的版本差异有关。我的应用程序中的所有许多程序集都引用了所有外部依赖项的相同版本,例如 MVC 和 EF。
我已将我的代码恢复为 MVC5.0,这使问题暂时消失了,但问题仍然既不被理解也不修复(我仍然需要在某个时候更新到 5.1!)。