我升级了一个项目,首先将代码从EF5迁移到EF6。我按照http://msdn.microsoft.com/en-us/library/upgradeef6.aspx中的所有说明进行操作。一切都很好。但是当我从数据库读取时运行单元测试时会抛出 InvalidOperationException:自创建数据库以来,支持上下文的模型已经发生了变化。显然,模型没有改变,但似乎不喜欢EF5迁移。
我尝试执行添加迁移以查看它可能要升级的内容,但它未能说现有的迁移尚未应用。注意,我不得不卸载并重新安装EF6,因为它没有正确安装,这可能会重置一些东西吗?
我还注意到EF5中的_MigrationHistory表是一个SystemTable,但在EF6中却不是。我知道这个表是不同的,但我期待这一切都向后兼容?
加了: 任何人都可以告诉我add-migrations如何决定当它没有连接到数据库时没有执行哪些迁移,因此无法访问_MigrationsHistory?如果我能理解,也许我可以理解出了什么问题。
关于我做错了什么的任何想法? 感谢。
答案 0 :(得分:1)
行。对于所有那些人,想知道答案是什么。分为两部分。
升级到EF6时,您必须在重命名某些表时迁移数据库,迁移_MigrationHistory表并创建大量新索引。因此,升级到EF6页面缺少迁移数据库所需的信息。
最后,这显然是显而易见的,你 DO 需要一个带Add-Migration的连接字符串。我的文档不正确,缺少ConnectionStringName参数,因此它认为没有进行任何迁移,因为它在默认的IIS Express数据库上查找,而不是实际的IIS数据库。