执行dotnet ef migrations add命令未生成实际迁移文件问题求助
问题根因
从迁移命令的输出日志可以直接定位问题:Writing migration to 'D:\migrations\Tags\20210823160452_Tags.cs'.
你在-o参数中使用了开头带斜杠的路径/migrations/Tags,Windows系统下以斜杠开头的路径会被识别为磁盘根目录的绝对路径,所以迁移类文件被生成到了D盘根目录的migrations文件夹下,没有存放在Ecom.Data项目目录内,后续编译项目时不会包含这些迁移文件,自然查询不到迁移记录、更新数据库也只会生成空库。
解决步骤
- 清理无效文件
先删除D盘根目录下的migrations文件夹,再删除Ecom.Data项目中已生成的Migrations文件夹下所有内容,同时删除现有空的SQLite数据库文件。 - 修正迁移命令的输出路径参数
输出路径如果要放在当前Ecom.Data项目下的Migrations文件夹内,需要使用相对路径,不要在路径开头加斜杠:dotnet ef migrations add Init -o Migrations/Init -s ..\Ecom.API\ - 验证迁移生成结果
执行完上述命令后,检查Ecom.Data项目下的Migrations/Init目录是否已经生成了带时间戳前缀的迁移类文件,确认文件存在后执行迁移列表查询命令验证:
此时可以看到刚刚创建的Init迁移记录。dotnet ef migrations list -s ..\Ecom.API\ - 执行数据库更新
确认迁移存在后执行更新命令即可生成带完整表结构的数据库:dotnet ef database update -s ..\Ecom.API\
优化建议
建议先更新EF Core工具版本,避免版本不兼容引发的隐性问题,执行命令:dotnet tool update --global dotnet-ef
内容的提问来源于stack exchange,提问作者BananaSupreme
相关产品推荐
相关产品推荐

