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

.NET Core 3.1配置MigrationsAssembly后跨项目执行EF迁移失败如何解决?

问题定位与修复方案

1. 配置代码错误

你在Startup.cs中配置迁移程序集的参数填写错误,MigrationsAssembly()方法需要传入的是存放迁移文件的项目的程序集名称,而非迁移文件所在的命名空间。你当前把迁移文件放在DatabaseContext项目中,默认程序集名称和项目名一致,所以应该修改配置为:

services.AddDbContext<ApplicationDbContext>(
            c => c.UseSqlServer(_config.GetConnectionString("ApplicationDbContext"), 
            opt => opt.MigrationsAssembly("DatabaseContext")));

2. 命令执行路径错误

你的相对路径计算错误,且路径包含空格未加引号,同时存在大小写不匹配问题:

  • 你的DatabaseContext项目存放在Shop/1. DatabaseSchema/路径下,如果你在DatabaseContext项目目录执行命令,要找到上级根目录的ShopApi项目,需要向上回溯两层,而非一层
  • 路径中包含空格时,必须用引号包裹路径字符串
  • 你的项目名为ShopApi,命令中错误写为ShopAPI,大小写差异在非Windows系统下会触发找不到项目的报错

3. 正确执行步骤

推荐直接在解决方案根目录(也就是Shop文件夹目录)下执行命令,避免相对路径计算错误,正确命令如下:

  • 新增迁移命令:
    dotnet ef migrations add ExampleMigration --project "1. DatabaseSchema/DatabaseContext" --startup-project ShopApi
  • 生成迁移脚本命令:
    dotnet ef migrations script --project "1. DatabaseSchema/DatabaseContext" --startup-project ShopApi

如果坚持在DatabaseContext项目目录下执行,对应命令为:
dotnet ef migrations add ExampleMigration -s "../../ShopApi"
dotnet ef migrations script --startup-project "../../ShopApi"

附加提醒:如果执行命令提示找不到ef工具,先执行全局安装命令:dotnet tool install --global dotnet-ef

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:21:02