Asp.net mvc ASP.NET MVC 3中的模型更新

Asp.net mvc ASP.NET MVC 3中的模型更新,asp.net-mvc,asp.net-mvc-3,entity-framework,razor,asp.net-mvc-3-areas,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Razor,Asp.net Mvc 3 Areas,我是MVC新手,在使用web窗体近6年后,我尝试扩展我的asp.net知识 到目前为止,MVC对我来说确实是抽象的,但我喜欢的是所使用的干净的编码。 我正在读《Pro ASP.NET MVC 3框架》一书,现在我陷入了一个困境,我不知道如何诚实地继续下去 以下是我得到的错误: 自创建数据库以来,支持“EfDbContext”上下文的模型已更改。考虑使用代码第一迁移来更新数据库。 这发生在我尝试更新一个产品之后。页面发回,但数据库中没有更新任何内容 浏览网页时,我发现了这个临时解决方案,将这一行放

我是MVC新手,在使用web窗体近6年后,我尝试扩展我的asp.net知识

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

以下是我得到的错误:

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

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

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


我想知道我怎样才能前进,我需要做些什么来解决这个问题

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


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

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


有关详细说明和演示,请参阅中的第4章。

删除数据库并重新运行代码。看看会发生什么。你是说通过sql server management studio永久删除数据库?我已经检查了第一个示例,下面是我得到的:目标数据库是:“SportsStore”(数据源:USER-PC\SQLR2,提供程序:System.Data.SqlClient,来源:Configuration)。没有挂起的基于代码的迁移。应用自动迁移:201209041417142_自动迁移。未应用自动迁移,因为这将导致数据丢失。您可以运行Update Database-Script-Force获取SQL脚本的副本。这将使您更容易确定在尝试迁移过程中遇到的问题。此外,如果其他人对“启用迁移”命令有问题,也应注意,以确保您安装了最新的EntityFramework以及最新的visual studio NuGet。