You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中EF合并迁移后database update提示迁移不存在

解决.NET 6中EF Core迁移存放在子目录导致update命令找不到迁移的问题

问题原因

EF Core默认扫描项目根目录下Migrations命名空间的迁移类,当迁移存放在Context2\Migrations子目录但未同步命名空间时,EF无法识别该目录下的迁移类,从而抛出找不到指定迁移的错误。

解决方案

方法一:添加迁移时同步指定命名空间

执行migrations add命令时,除指定输出目录,额外添加--namespace参数,让迁移类的命名空间与目录结构匹配:

dotnet ef migrations add <<MIGRATION_NAME>> --context Context2 --project Database_Project --startup-project Startup_Project --output-dir Context2\Migrations --namespace Database_Project.Context2.Migrations

生成的迁移类会自动使用Database_Project.Context2.Migrations命名空间,EF执行database update时会自动扫描该命名空间下的迁移,无需额外配置即可找到目标迁移。

之后正常执行update命令:

dotnet ef database update <<MIGRATION_NAME>> --context Context2 --project Database_Project --startup-project Startup_Project

方法二:修改已生成迁移的命名空间

如果已生成迁移但未指定命名空间,手动修改以下文件的命名空间为Database_Project.Context2.Migrations:

  • Context2\Migrations下的所有迁移.cs文件
  • Context2\Migrations下的快照文件(如Context2ModelSnapshot.cs)

修改完成后,重新执行database update命令即可。

额外注意事项

  • 确认Context2的DbContext配置中,没有自定义迁移历史表的错误配置(比如错误指定Schema或表名),避免EF无法匹配历史记录。
  • 确保执行命令时连接的数据库与清空__EFMigrationsHistory表的数据库为同一个,避免环境混淆。

内容的提问来源于stack exchange,提问作者Thomas Due

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:45:32