无法将系统从EF 4.3.1升级到5

时间:2013-03-15 09:48:35

标签: asp.net-mvc entity-framework

背景: 我已将系统从Entity Framework 4.3.1升级到5,并从VS 2010升级到VS 2012。 我也从MVC3升级到MVC4。 我首先使用EF迁移代码。

所有这一切都在我的机器上完美运行,因此我尝试使用新代码升级我的测试服务器。

首先我在服务器上安装了.Net 4.5,没有任何意外(包括所有后续的Windows更新)。 然后我验证了系统继续在升级后的服务器上运行。

然后我使用VS2012中的新“发布...”向导构建部署包。在这里,我决定不选中名为“执行代码优先迁移(在应用程序启动时运行)”的复选框,因为我希望在安装后直接调用migrate.exe来执行此操作。

现在,我尝试升级测试系统。部署工作没有问题,但当我尝试运行migrate.exe调用时,我首先收到消息:

“没有待定的基于代码的迁移。”然后出现了一个大的红色文本块,说明:

“错误:无法更新数据库以匹配当前模型,因为存在挂起的更改并禁用自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true启用自动迁移。“

当我尝试使用系统时,此调用验证数据库的有效性返回false: context.Database.CompatibleWithModel(真) 我的系统不接受这个,它关闭了。

然后在更换__MigratHistory中的CreatedOn列后,我恢复到我以前的包,系统再次像魅力一样工作。 下面是我用来恢复的sql sript ...

alter table dbo.__MigrationHistory
add CreatedOn datetime null
go

Update s
Set s.CreatedOn = CAST(SUBSTRING(s.MigrationId, 1, 8) as datetime) + CAST(SUBSTRING(s.MigrationId, 9, 2) + ':' + SUBSTRING(s.MigrationId, 11, 2) as time),
s.ProductVersion = '4.3.1'
from dbo.__MigrationHistory s

对我做错了什么的消息?

1 个答案:

答案 0 :(得分:0)

在Configuration.cs文件中进行更改==>

public Configuration()
    {
        AutomaticMigrationsEnabled = **true**;
    }