사용자 지정 마이그레이션 기록 테이블

기본적으로 EF Core는 라는 __EFMigrationsHistory 테이블에 기록하여 데이터베이스에 적용된 마이그레이션을 추적합니다. 다양한 이유로 필요에 맞게 이 테이블을 사용자 지정할 수 있습니다.

Important

마이그레이션을 적용한 마이그레이션 기록 테이블을 사용자 지정하는 경우 데이터베이스의 기존 테이블을 업데이트해야 합니다.

스키마 및 테이블 이름

OnConfiguring()(또는 ASP.NET Core의 ConfigureServices())에서 MigrationsHistoryTable() 메서드를 사용하여 스키마 및 테이블 이름을 변경할 수 있습니다. 다음은 SQL Server EF Core 공급자를 사용하는 예제입니다.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlServer(
        _connectionString,
        x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));

기타 변경 사항

테이블의 추가 측면을 구성하려면 공급자별 IHistoryRepository 서비스를 재정의하고 바꿉니다. 다음은 SQL Server에서 MigrationId 열 이름을 Id로 변경하는 예제입니다.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options
        .UseSqlServer(_connectionString)
        .ReplaceService<IHistoryRepository, MyHistoryRepository>();

Warning

SqlServerHistoryRepository는 내부 네임스페이스 내에 있으며 향후 릴리스에서 변경될 수 있습니다.

internal class MyHistoryRepository : SqlServerHistoryRepository
{
    public MyHistoryRepository(HistoryRepositoryDependencies dependencies)
        : base(dependencies)
    {
    }

    protected override void ConfigureTable(EntityTypeBuilder<HistoryRow> history)
    {
        base.ConfigureTable(history);

        history.Property(h => h.MigrationId).HasColumnName("Id");
    }
}