EF Code First Migrations: 重新创建数据库和填充数据

3

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

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方法。

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

1个回答

1
我认为这将真正解决您的问题:
使用Entity Framework Code First Migrations自动创建和更新应用程序,链接如下Using Entity Framework Code First Migrations to auto-create and auto-update an application 在此代码中,在数据库初始化后,使用System.Data.Entity.Migrations.DbMigrator的实例手动应用所有未处理的迁移。
这种解决方案的问题是您需要进行初始迁移。虽然在链接的文章中没有解释,但我认为您可以通过在启用自动迁移之前从Nuget控制台创建一个空数据库的初始迁移来完成。

更新的链接:http://galleryserverpro.com/using-entity-framework-code-first-migrations-to-auto-create-and-auto-update-an-application/ - Roger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接