繁体   English   中英

EF代码优先迁移:重新创建数据库和种子

[英]EF Code First Migrations: recreate database and Seed

我使用MigrateDatabaseToLatestVersion初始化和SeedDbMigrationConfiguration

public sealed class Configuration : DbMigrationsConfiguration<Context>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        ContextKey = "...";
    }

    protected override void Seed(Context context)
    {
        context.MyEntities.AddOrUpdate(p => p.Name, new[]
        {
            new MyEntity { Name = "Name 1" },
        });
        context.SaveChanges();
    }
}

自动迁移可以在现有数据库上正常运行。 但是,当不存在现有数据库(* .mdf,LocalDb)时,在第一个应用程序启动初始化程序仅从DbMigration调用Up()方法而不使用Seed 仅在应用程序重新启动后才调用Seed方法。

如果我在首次启动之前手动调用Upgrade-Database ,它将创建数据库,并且首次运行时将调用Seed方法。

没有现有数据库时,如何在应用程序启动时使用种子数据自动初始化数据库?

我认为这确实可以解决您的问题:

使用Entity Framework Code First迁移来自动创建和自动更新应用程序

在此代码中,数据库初始化后,将使用System.Data.Entity.Migrations.DbMigrator的实例手动应用所有未决的迁移。

该解决方案的问题是您需要进行初始迁移。 尽管在链接的文章中没有对此进行解释,但我认为您可以通过在启用自动迁移之前从Nuget控制台创建一个针对空数据库的初始迁移。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM