2013-02-19 40 views
3

因此,我有一个MVC4项目在本地主机上工作,是时候将其上传到共享环境。实体代码首先与共享主机生产DB

作为我使用一个共享的托管环境,我不能使用内置的初始化器。所以我创建了我的mdf文件(.bak)的备份并将其上传到我的生产环境。一切看起来正确的...这些表都在那里..但是当我运行我的应用程序我得到这个异常:

自数据库创建的模型支持的“YourContext”已经时过境迁。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。


明白了!

我添加了一个自定义初始值设定项。

public class ProductionInitializer : IDatabaseInitializer<AvariceContext> 
{ 
    public void InitializeDatabase(AvariceContext context) 
    { 
    } 
} 

该解决方案...是hackish,但工程。如果任何人可以摆脱一些光,我会很感激。

+0

我发现MigrationHistory系统的表,这两个的Dbs比赛。 – user2085865 2013-02-19 06:15:05

回答

0

如果你确信你没有更新EF模型,因为创建你可以删除_MigrationHistory表的数据库。 这只是用来确保数据库和模型是同步的,但它不适用于你的情况。

在未来,你仍然可以通过添加“-script”的标志,你在开发环境中执行如下更新数据库命令使用EF的迁移功能。这将生成一个可以在生产数据库上执行的迁移脚本。

> update-database -script 
0

“得到它的工作!我添加了一个自定义的初始化。”

为什么这个工程:... 你可以尽管EF看到一些细微的差别的事实访问数据库。 您的代码实现了IDatabaseInitializer并忽略了初始化或MIGRATE到最新版本的机会(空方法)。所以Ef认为DB不正确,而且你仍然继续。

对稳态EF访问不是一个长期观点。 我想看看迁移到最新版本的工作。

作为我使用一个共享的托管环境,我不能使用内置的初始值设定。”

为什么不呢?

相关问题