部署到Azure而不运行EF Code First迁移

时间:2015-05-25 14:11:26

标签: entity-framework azure ef-code-first ef-migrations

我正在使用Code First Migrations运行实体框架。我的新版本添加了一个表,修改了几个表,并运行了一些脚本。使用update-database在本地开发时,这非常有效。

部署后,未创建新表,我收到了客户端的错误。我将调试器附加到已部署的站点以跟踪发生的情况。它到达控制器,经历了正常的流程,并且在第一次数据库调用到新的(但实际上不存在)表时,它跳转到Configuration类进行迁移。

internal sealed class Configuration : DbMigrationsConfiguration<myProject.api.AuthContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        MigrationsDirectory = @"Migrations\Auth";
        ContextKey = "myProject.api.AuthContext";
    }

所以我的想法很棒,一切都很好。它遍历所有这些,返回初始数据库调用,但然后该调用返回错误,粘贴在

下面
  

支持'AuthContext'上下文的模型自从以来发生了变化   数据库已创建。考虑使用Code First Migrations进行更新   数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

这是令人惊讶的,因为我确实启用了代码首次迁移!使用标准的enable-migrations和add-migration,当我发出update-database命令时,它在我的本地机器上完美运行。

1)如何在部署到Azure后运行Code First迁移?

更新1

以下是我的发布设置。由于某种原因,我没有复选框选项:“执行代码优先迁移”,我猜这是问题... enter image description here

2 个答案:

答案 0 :(得分:3)

好哇!我的更新是问题所在。我从其他SO帖子中发现他有时会发生这种情况。清理和重建,然后重新启动VS,恢复了“执行代码优先迁移”功能。复选框。重新部署,一切都很完美。

答案 1 :(得分:2)

你检查了这些代码行吗?

在你的web.config中:

<appSettings>
  <add key="MigrateDatabaseToLatestVersion" value="true"/>
</appSettings>

在global.asax.cs / Startup.cs(OWIN启动)中:

var configuration = new Migrations.Configuration();
var migrator = new DbMigrator(configuration);
migrator.Update();