0

在使用 Web 表单将近 6 年之后,我在尝试扩展我的 asp.net 知识时,我是 MVC 的新手。

到目前为止,MVC 对我来说真的很抽象,但我喜欢的是使用的干净编码。我正在阅读“Pro ASP.NET MVC 3 Framework”一书,现在我陷入了困境,我不知道如何诚实地继续下去。

这是我得到的错误:

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

这发生在我尝试更新一个产品之后。该页面已发回,但数据库中没有任何更新。

浏览网页我找到了这个临时解决方案,将这一行放在 global.asax 文件中解决了这个问题:Database.SetInitializer<SportsStore.Domain.Concrete.EFDbContext>(null); 但现在出现了空白页面,而不是充满数据的页面。

我想知道如何才能继续前进,我需要做些什么来解决这个问题。

4

2 回答 2

0

网上有很多解释迁移的博客和文章,我会使用以下两个链接作为参考。简而言之,您更改了模型,但数据库中的表尚未更新。您可以删除数据库中的表,并允许 EF 重新创建它们,撤消对模型的更改,或者(仅限 MVC 4?)运行“迁移”,这或多或少是一种奇特的说法,即允许 EF创建一个 SQL 脚本来更新您的 SQL 表以匹配您的模型的当前版本。

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

http://coding.abel.nu/2012/03/ef-migrations-command-reference/

于 2012-09-04T14:48:08.883 回答
0

首先使用代码,数据库有一个校验和表来跟踪您的类(称为EdmMetaData)的更改,并且您的错误表明 Entity Framework 已检测到此类更改。如果您想手动处理它,请删除提到的表,并手动更新数据库以符合类规范。

正如您提到的,另一种方法是让框架删除并重新创建更改的表。

有关详细说明和演示,请参阅Pluralsight 视频教程中的第 4 章。

于 2012-09-04T14:50:03.280 回答