自定义数据库初始化器

你可以创建自己的 IDatabaseInitializer 实现。

初始化程序的示例实现,它将数据库迁移到 0,然后一直迁移到最新的迁移(例如在运行集成测试时很有用)。为了做到这一点,你也需要一个 DbMigrationsConfiguration 类型。

public class RecreateFromScratch<TContext, TMigrationsConfiguration> : 
IDatabaseInitializer<TContext>
where TContext : DbContext
where TMigrationsConfiguration : DbMigrationsConfiguration<TContext>, new()
{
    private readonly DbMigrationsConfiguration<TContext> _configuration;

    public RecreateFromScratch()
    {
        _configuration = new TMigrationsConfiguration();
    }

    public void InitializeDatabase(TContext context)
    {
        var migrator = new DbMigrator(_configuration);
        migrator.Update("0");
        migrator.Update();
    }
}