自訂移轉歷程記錄資料表

根據預設,EF Core 會將哪些移轉記錄在名為 __EFMigrationsHistory 的資料表中,以追蹤哪些移轉已套用至資料庫。 基於各種原因,您可能想要自訂此資料表,以更符合您的需求。

重要

如果您在套用移轉之後 自訂移轉歷程記錄資料表 ,您必須負責更新資料庫中的現有資料表。

結構描述與資料表名稱

您可以使用 中的 OnConfiguring() 方法來變更架構和資料表名稱 MigrationsHistoryTable() (或在 ConfigureServices() ASP.NET Core 上)。 以下是使用 SQL Server EF Core 提供者的範例。

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

其他變更

若要設定資料表的其他層面,請覆寫並取代提供者特定的 IHistoryRepository 服務。 以下是將 MigrationId 資料行名稱變更為 SQL Server 上的識別碼的範例。

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