Bagikan melalui


Tabel Riwayat Migrasi Kustom

Secara default, EF Core melacak migrasi mana yang telah diterapkan ke database dengan merekamnya dalam tabel bernama __EFMigrationsHistory. Untuk berbagai alasan, Anda mungkin ingin menyesuaikan tabel ini agar lebih sesuai dengan kebutuhan Anda.

Penting

Jika Anda mengkustomisasi tabel Riwayat Migrasi setelah menerapkan migrasi, Anda bertanggung jawab untuk memperbarui tabel yang sudah ada dalam database.

Skema dan nama tabel

Anda dapat mengubah skema dan nama tabel menggunakan MigrationsHistoryTable() metode di OnConfiguring() (atau ConfigureServices() di ASP.NET Core). Berikut adalah contoh menggunakan penyedia SQL Server EF Core.

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

Perubahan lain

Untuk mengonfigurasi aspek tambahan tabel, ambil alih dan ganti layanan khusus IHistoryRepository penyedia. Berikut adalah contoh mengubah nama kolom MigrationId menjadi Id di SQL Server.

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

Peringatan

SqlServerHistoryRepository berada di dalam namespace internal dan dapat berubah dalam rilis mendatang.

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