自定義資料庫初始化器

你可以建立自己的 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();
    }
}