EF Core 6执行Add-Migration命令时启动控制台应用且无迁移生成
EF Core 6迁移未生成、控制台应用意外启动的问题解决
排查方向及修复步骤
确认程序包管理器控制台的默认项目
必须在控制台顶部的「默认项目」下拉框中,选中存放MigrationMySqlDbContext的控制台项目。若选成ASP.NET Core主项目,EF Core无法定位到目标上下文,还可能触发应用启动。检查控制台项目的DbContext配置
确保控制台项目的Program.cs正确配置EF Core服务,且不要在启动时直接执行业务逻辑(避免迁移命令触发应用运行)。示例配置:var host = Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddDbContext<MigrationMySqlDbContext>(options => options.UseMySql("你的MySQL连接字符串", ServerVersion.AutoDetect("你的MySQL连接字符串"))); }) .Build(); // 不要在这里直接调用数据库初始化或业务逻辑代码修正迁移命令参数
- 若
MigrationMySqlDbContext不在默认命名空间下,需指定完整类名(如YourNamespace.MigrationMySqlDbContext) - 路径参数改用斜杠
/避免转义问题,确保输出目录存在
修正后命令:
Add-Migration MySql -context YourNamespace.MigrationMySqlDbContext -OutputDir Migrations/MySql- 若
对齐EF Core工具与类库版本
确认控制台项目中EF Core工具版本与EF Core 6.x版本一致,项目文件中检查:<ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.*" PrivateAssets="all" /> </ItemGroup>或更新全局工具:
dotnet tool update --global dotnet-ef --version 6.0.*改用dotnet CLI执行迁移
切换到控制台项目的目录,执行以下命令替代程序包管理器控制台操作:dotnet ef migrations add MySql --context MigrationMySqlDbContext --output-dir Migrations/MySql
内容的提问来源于stack exchange,提问作者Timothy
相关产品推荐
相关产品推荐

