3

我正在使用MigrateDatabaseToLatestVersion初始化程序和Seed方法DbMigrationConfiguration

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)时,在第一个应用程序启动初始化程序时,只会调用没有的Up()方法。方法仅在应用程序重新启动后调用。DbMigrationSeedSeed

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

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

4

1 回答 1

1

我认为这将真正解决您的问题:

使用实体框架代码优先迁移来自动创建和自动更新应用程序

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

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

于 2014-05-29T14:35:03.133 回答