全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

EF Core如何自定义迁移历史表 EF Core迁移历史表配置方法

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

EF Core 默认使用 __EFMigrationsHistory 表(位于 dbo 模式下)记录迁移执行状态,但你可以通过配置轻松自定义它的名称、模式,甚至字段结构——关键在于用对方法,避免直接改表引发一致性风险。

修改表名和数据库模式

这是最常用也最安全的自定义方式,只需在 OnConfiguring 中调用 MigrationsHistoryTable

  • 指定新表名和 Schema(模式),例如改为 audit.__Migrations
  • 代码示例:
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(connectionString, x =>
            x.MigrationsHistoryTable("__Migrations", "audit"));
    }
  • 首次运行 dotnet ef database update 时,EF Core 会自动创建该表;已有迁移历史需手动迁移数据或清空重来

替换列名(如 MigrationId → Id)

默认字段名不满足命名规范?可通过替换 IHistoryRepository 实现:

  • 新建继承自 SqlServerHistoryRepository 的类,重写 ConfigureTable 方法
  • OnConfiguring 中用 .ReplaceService() 注册
  • 注意:列名变更后,所有环境必须同步更新,否则迁移命令会报错

添加审计字段(如 AppliedAt、AppliedBy)

EF Core 不允许直接扩展历史表结构,但可安全增强:

  • 先让 EF Core 创建默认历史表(或自定义表名)
  • 再用 SQL 手动添加非空字段(建议设默认值,如 GETDATE()
  • 配合数据库触发器或应用层逻辑,在每次插入时填充操作人等信息
  • 不推荐删改原生字段,只建议增列

查看与验证配置是否生效

配置完别急着跑迁移,先确认效果:

  • 执行 dotnet ef migrations list,检查输出中是否提示“Using migration history table 'xxx' in schema 'yyy'”
  • 连接数据库,查表是否存在、字段是否符合预期:SELECT TOP 1 * FROM [audit].[__Migrations]
  • 运行一次 dotnet ef database update,观察是否成功写入新表

基本上就这些。改名改模式很稳妥,改字段要绕点路但可控,直接删记录或改主键结构则容易出问题——优先走配置,少碰裸 SQL。


# app  # sqlserver  # yy  # sql  # select  # 继承  # using  # history  # table  # database  # 数据库  # 自定义  # 可通过  # 默认值  # 这是  # 首次  # 已有  # 只需  # 可以通过  # 重写  # 再用 


相关文章: 网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何选择高效响应式自助建站源码系统?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  已有域名和空间,如何快速搭建网站?  如何获取PHP WAP自助建站系统源码?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  安徽网站建设与外贸建站服务专业定制方案  昆明高端网站制作公司,昆明公租房申请网上登录入口?  Python如何创建带属性的XML节点  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  小型网站制作HTML,*游戏网站怎么搭建?  网站制作壁纸教程视频,电脑壁纸网站?  广东企业建站网站优化与SEO营销核心策略指南  建站主机CVM配置优化、SEO策略与性能提升指南  如何快速配置高效服务器建站软件?  广州商城建站系统开发成本与周期如何控制?  香港服务器租用费用高吗?如何避免常见误区?  如何选择高性价比服务器搭建个人网站?  如何用搬瓦工VPS快速搭建个人网站?  建站之星如何助力企业快速打造五合一网站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何在万网自助建站中设置域名及备案?  建站主机选购指南:核心配置优化与品牌推荐方案  如何用狗爹虚拟主机快速搭建网站?  ,南京靠谱的征婚网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何零成本快速生成个人自助网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何获取上海专业网站定制建站电话?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  宝塔面板如何快速创建新站点?  制作网站公司那家好,网络公司是做什么的?  建站之星如何快速生成多端适配网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  存储型VPS适合搭建中小型网站吗?  建站之星北京办公室:智能建站系统与小程序生成方案解析  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何快速生成可下载的建站源码工具?  建站之星代理如何优化在线客服效率?  如何用VPS主机快速搭建个人网站?  C++时间戳转换成日期时间的步骤和示例代码 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。