已入库EF Core迁移重命名以消除CS8981警告(.NET7/EF7)
解决EF Core迁移类名全小写触发CS8981警告的安全重命名方法
针对你遇到的已应用到数据库的迁移类名全小写触发CS8981警告的问题,在.NET7/EF7环境下可以按以下步骤安全重命名:
第一步:做好备份
先备份数据库(重点是__EFMigrationsHistory表)和所有迁移文件,避免操作失误导致数据或迁移记录丢失。第二步:修改迁移文件的类名与文件名
- 打开目标迁移的主.cs文件,把类名
changedrelatinoonscannedobjects改为符合命名规范的名称(同时修正拼写错误),比如ChangedRelationOnScannedObjects。 - 重命名该迁移的主.cs文件和对应的.designer.cs文件,文件名保持
[时间戳]_新类名.cs格式,比如YYYYMMDDHHMMSS_ChangedRelationOnScannedObjects.cs。 - 同步修改.designer.cs文件中的类名,确保和主文件一致。
- 打开目标迁移的主.cs文件,把类名
第三步:更新模型快照文件
打开项目中的[DbContext名]ModelSnapshot.cs文件,找到引用原小写类名的地方,替换成新的类名。第四步:保持MigrationId与数据库记录一致
数据库的__EFMigrationsHistory表中已记录原迁移的MigrationId(格式为[时间戳]_changedrelatinoonscannedobjects),为让EF识别该迁移已执行,需在新迁移类中重写MigrationId属性:public override string MigrationId => "YYYYMMDDHHMMSS_changedrelatinoonscannedobjects";注意替换成实际的时间戳和原迁移名称(保留原拼写错误),不要修改数据库中的记录。
第五步:验证结果
编译项目,确认CS8981警告已消失;运行EF相关命令(如Add-Migration或Update-Database),验证EF能正常识别已执行的迁移,不会重复执行或报错。
内容的提问来源于stack exchange,提问作者sommmen
相关产品推荐
相关产品推荐

