自创建数据库以来,支持上下文的模型已更改。考虑使用Code First Migrations来更新数据库

时间:2014-02-23 19:49:45

标签: asp.net-mvc-5 entity-framework-6

我正在使用MVC5和EF6 CodeFirst迁移。我的模型与我的MVC Web应用程序位于一个单独的项目中,并且在尝试访问模型类时我一直收到此错误。我已启用自动迁移功能。我可以删除整个数据库,然后使用update-database重新生成我仍然遇到此错误的所有内容。错误是错误的,因为自创建数据库以来上下文没有更改。此外,通过单元测试项目,使用与我在MVC应用程序中相同的调用代码,我可以引用相同的模型项目,访问模型类和数据。我将模型与MVC项目分开,因为我需要能够在Web之外重用模型。

自创建数据库以来,支持“xx”上下文的模型已更改。考虑使用Code First Migrations来更新数据库

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:4)

我遇到了类似的问题:

  

支持'ApplicationDbContext'上下文的模型已经改变了   数据库已创建。考虑使用Code First Migrations   更新数据库

我有一个MVC项目和另一个模型,上下文和存储库项目。我已经工作了几个星期,但今天它说停止了。

我试图删除数据库,启用迁移,添加迁移和更新数据库这么多次,我已经失去了数量。我已经为MigrateDatabaseToLatestVersion以及DropCreateDatabaseIfModelChanges添加了初始化器。

最终使它工作的是将模型,上下文和存储库移动到MVC项目中(而不是我热衷的东西)......然后它开箱即用,没有任何代码更改(除了命名空间)!很奇怪......

我在白天试读了很多博客文章试图解决这个问题。其中一个(我不知道哪一个)提到了Visual Studio 2013中的一个错误,其中对DLL文件的引用并不总是按照它们应该更新,这表明当我运行add-migration和update时,我的MVC项目错过了一些东西我单独项目中的数据库。但这只是猜测。

我在我的解决方案中使用EF 6.1和.Net 4.5.1。

答案 2 :(得分:0)

我们遇到了同样的问题。为我解决的问题不一定是将Model,Context转移到MVC项目中,而是将我的单独项目移动到与MVC项目相同的解决方案中,并通过项目文件夹引用它。

这有效,但引用DLL而不是项目不起作用。

有趣的是,在创建新的控制台应用程序并引用DLL程序集时,我们没有遇到此问题...仅来自MVC项目

答案 3 :(得分:0)

只是详细说明RouR的答案:

我有一个附有模型的MVC网络项目。

然后我创建了一个使用此模型的控制台应用程序。

我的控制台应用程序,只知道连接字符串并且有EF引用,只是不知道如何让每个人进行通信。

因此,出现模型支持数据库更改错误

引擎只是混淆了如何继续它看到并期望一个实体,就像参考一样,只是在找不到合适的上下文时丢失它,并假设上下文没有正确迁移。

所以我们在这里,

Database.SetInitializer<MyProject.Models.MyModel>(null);