【问题标题】:EF - code first - automatic update databaseEF - 代码优先 - 自动更新数据库
【发布时间】:2014-10-06 08:33:00
【问题描述】:

我想在我的代码中使用自动迁移,但每次我更改模型中的某些内容时,我都需要手动运行 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);
    }
}

【问题讨论】:

    标签: entity-framework entity-framework-migrations


    【解决方案1】:

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

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

    【讨论】:

    • 但是我的代码中确实有 MigrateDatabaseToLatestVersion... 你读了吗?我做错了什么?
    • @TamarG:ManualDbInitializer() 是什么?你在MigrateDatabaseToLatestVersion&lt;ManualContext,Configuration&gt;()之后设置它。
    • 这是给种子的。我用代码编辑了我的问题
    • @TamarG:实际上您的ManualDbInitializerCreateDatabaseIfNotExists,所以您将Database 初始化程序设置为CreateDatabaseIfNotExists 而不是MigrateDatabaseToLatestVersion。将您的 Seed() 方法移动到您的 Configuration 类。
    • 如果我将 Seed() 移动到配置 - 只有在创建新数据库或每次更新数据库时才会调用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2012-08-12
    • 2015-10-07
    相关资源
    最近更新 更多