我启用了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。
答案 0 :(得分:3)
我发现了我的(愚蠢的)错误,我没有更改初始化代码,但我设法取消注册它,因此它没有被调用。
我将它移动到我的上下文中的静态构造函数,所有人都很高兴。
static MyContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}