다음을 통해 공유


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

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

중요합니다

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

스키마 및 테이블 이름

MigrationsHistoryTable() 메서드를 OnConfiguring() (ConfigureServices()의 경우 ASP.NET Core에서 사용)로 사용하여 스키마와 테이블 이름을 변경할 수 있습니다. 다음은 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>();

경고

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");
    }
}