EF迁移不会自动更新数据库

时间:2014-02-22 08:04:41

标签: c# entity-framework azure ef-migrations

我启用了EF迁移,并希望更新在azure中运行的现有数据库。当我运行应用程序时,我得到以下异常:

  

发生了'System.InvalidOperationException'类型的异常   EntityFramework.dll但未在用户代码中处理

     

附加信息:支持'MyContext'上下文的模型有   自数据库创建以来已更改。考虑使用Code First   迁移以更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

但是我启用了迁移。

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>());

internal sealed class Configuration : DbMigrationsConfiguration<MyContext>
{
    public Configuration()
    {
         AutomaticMigrationsEnabled = false;//have also tried true
    }
}

直到最近一次提交,所有内容都按预期自动运行,并且我没有更改初始化代码(仅添加了新的迁移)。

如果我下载数据库并运行应用程序,我会得到相同的结果。但是,如果我手动运行Update-Database,一切都按预期工作。

有没有办法让它通过代码运行,因为我无法在Azure中运行Update-Database。

1 个答案:

答案 0 :(得分:3)

我发现了我的(愚蠢的)错误,我没有更改初始化代码,但我设法取消注册它,因此它没有被调用。

我将它移动到我的上下文中的静态构造函数,所有人都很高兴。

static MyContext()
{
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}