3

所以我有一个在 localhost 上工作的 MVC4 项目,是时候将它上传到共享环境了。

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

自创建数据库以来,支持“YourContext”上下文的模型已更改。考虑使用 Code First 迁移来更新数据库 ( http://go.microsoft.com/fwlink/?LinkId=238269 )。


得到它的工作!

我添加了一个自定义初始化程序。

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

解决方案......是hackish,但有效。如果有人能提供一些启示,我将不胜感激。

4

2 回答 2

0

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

为什么会这样:...尽管 EF 发现了一些细微的差异,但您仍然可以访问数据库。您的代码实现了 IDatabaseInitializer 并忽略了初始化或迁移到最新版本的机会(空方法)。所以 Ef 认为 DB 不正确,你还是继续。

不是对稳定状态 EF 访问的长期看法。我会考虑让迁移到最新版本的工作。

由于我使用的是共享托管环境,我无法使用内置的初始化程序。”

为什么不 ?

于 2013-02-19T15:04:15.440 回答
0

如果您确定自创建数据库后尚未更新 EF 模型,您可以删除 _MigrationHistory 表。这仅用于确保数据库和模型同步,但在您概述的场景中不起作用。

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

> update-database -script
于 2013-02-19T06:24:03.190 回答