EF - 代码优先 - 自动更新数据库

时间:2014-10-06 08:33:01

标签: entity-framework ef-migrations

我想在我的代码中使用自动迁移,但每次我在模型中更改某些内容时,我都需要手动运行update-Database。我可以自动完成吗?

这是配置:

public class Configuration : DbMigrationsConfiguration<ManualContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
    ...
}

AppActivator

[assembly: WebActivator.PreApplicationStartMethod(typeof(AppActivator), "PreStart")]
[assembly: PostApplicationStartMethod(typeof(AppActivator), "PostStart")]
[assembly: ApplicationShutdownMethod(typeof(AppActivator), "Stop")]

namespace Manual.Web
{
  public static class AppActivator
  {
    public static void PreStart()
    {
      Database.SetInitializer(
               new MigrateDatabaseToLatestVersion<ManualContext,Configuration>());
      Database.SetInitializer(new ManualDbInitializer());

      MeasurementConfig.RegisterUnits();
      MiniProfilerPreStart();
    }
    ...
  }

和ManualDbInitializer - 用于种子(第一次创建数据库时):

public class ManualDbInitializer : CreateDatabaseIfNotExists<ManualContext>
{
    protected override void Seed(ManualContext context)
    {
        ManualDbInitializerSeed.SeedForDB(context);
    }
}

1 个答案:

答案 0 :(得分:0)

  

如果要部署应用程序,则可能希望在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序来完成此操作。数据库初始化程序只包含一些逻辑,用于确保正确设置数据库。第一次在应用程序进程(AppDomain)中使用上下文时运行此逻辑。

http://msdn.microsoft.com/en-us/data/jj591621#initializer