从EF5升级到EF6后,它说模型已经改变

时间:2014-05-09 10:03:17

标签: entity-framework entity-framework-6

我升级了一个项目,首先将代码从EF5迁移到EF6。我按照http://msdn.microsoft.com/en-us/library/upgradeef6.aspx中的所有说明进行操作。一切都很好。但是当我从数据库读取时运行单元测试时会抛出 InvalidOperationException:自创建数据库以来,支持上下文的模型已经发生了变化。显然,模型没有改变,但似乎不喜欢EF5迁移。

我尝试执行添加迁移以查看它可能要升级的内容,但它未能说现有的迁移尚未应用。注意,我不得不卸载并重新安装EF6,因为它没有正确安装,这可能会重置一些东西吗?

我还注意到EF5中的_MigrationHistory表是一个SystemTable,但在EF6中却不是。我知道这个表是不同的,但我期待这一切都向后兼容?

加了: 任何人都可以告诉我add-migrations如何决定当它没有连接到数据库时没有执行哪些迁移,因此无法访问_MigrationsHistory?如果我能理解,也许我可以理解出了什么问题。

关于我做错了什么的任何想法? 感谢。

1 个答案:

答案 0 :(得分:1)

行。对于所有那些人,想知道答案是什么。分为两部分。

升级到EF6时,您必须在重命名某些表时迁移数据库,迁移_MigrationHistory表并创建大量新索引。因此,升级到EF6页面缺少迁移数据库所需的信息。

最后,这显然是显而易见的,你 DO 需要一个带Add-Migration的连接字符串。我的文档不正确,缺少ConnectionStringName参数,因此它认为没有进行任何迁移,因为它在默认的IIS Express数据库上查找,而不是实际的IIS数据库。