自定义数据库初始化器
你可以创建自己的 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();
}
}