自訂移轉歷程記錄資料表
根據預設,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");
}
}