EF Core 默认使用 dbo.__EFMigrationsHistory 表记录迁移状态,可通过 MigrationsHistoryTable 方法自定义表名和模式;替换 IHistoryRepository 可修改列名;添加审计字段需手动执行 SQL 增列并设默认值;配置后需验证表名、字段及迁移写入是否生效。

EF Core 默认使用 __EFMigrationsHistory 表(位于 dbo 模式下)记录迁移执行状态,但你可以通过配置轻松自定义它的名称、模式,甚至字段结构——关键在于用对方法,避免直接改表引发一致性风险。
这是最常用也最安全的自定义方式,只需在 OnConfiguring 中调用 MigrationsHistoryTable:
audit.__Migrations
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(connectionString, x =>
x.MigrationsHistoryTable("__Migrations", "audit"));
}dotnet ef database update 时,EF Core 会自动创建该表;已有迁移历史需手动迁移数据或清空重来默认字段名不满足命名规范?可通过替换 IHistoryRepository 实现:
SqlServerHistoryRepository 的类,重写 ConfigureTable 方法OnConfiguring 中用 .ReplaceService<ihistoryrepository customhistoryrepository>()</ihistoryrepository> 注册EF Core 不允许直接扩展历史表结构,但可安全增强:
GETDATE())配置完别急着跑迁移,先确认效果:
dotnet ef migrations list,检查输出中是否提示“Using migration history table 'xxx' in schema 'yyy'”SELECT TOP 1 * FROM [audit].[__Migrations]
dotnet ef database update,观察是否成功写入新表基本上就这些。改名改模式很稳妥,改字段要绕点路但可控,直接删记录或改主键结构则容易出问题——优先走配置,少碰裸 SQL。
以上就是EF Core如何自定义迁移历史表 EF Core迁移历史表配置方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号