实体框架未使用Database.SetInitializer()应用迁移

时间:2014-06-01 21:05:20

标签: entity-framework ef-migrations

我有一个简单的ASP.NET网页站点使用Entity Framework 6.1(使用csproj的标准项目中的Web页面,以便我可以使用EF Code First进行迁移)。这是我的_AppStart.cshtml:

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

这一切都编译得很好,我已经确认代码确实通过了这一行但是没有应用迁移 - 我已经确认通过手动执行Update-Database来完成正常工作。

可能有什么不对?我需要设置其他东西吗?

1 个答案:

答案 0 :(得分:1)

调用SetInitializer(如名称所示)不会创建数据库或应用迁移。它只是设置初始化程序。例如,当您希望使用SaveChanges方法将数据保存到db并且此时数据库不存在时,将调用它。要强制立即迁移,您应该使用DbMigrator类:

var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();