EF Core 3.1代码优先迁移遇异常,求正确执行命令
EF Core 3.1 代码优先迁移正确命令及问题修复
一、解决dotnet-ef命令不识别的问题
执行dotnet-ef migrations add [migrationName]提示“Unrecognized command or argument 'dotnet-ef'”时,按以下步骤处理:
- 全局安装匹配版本的EF Core工具:
(版本需和项目中EF Core NuGet包的3.1.x版本保持一致)dotnet tool install --global dotnet-ef --version 3.1.32 - 重启终端或确认工具已加入系统PATH;若全局安装无效,在项目
.csproj中添加本地工具引用:
执行<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="3.1.32" /> </ItemGroup>dotnet restore生效。
二、代码优先模式标准迁移流程
1. 生成初始迁移
确保DbContext已正确配置(包含实体DbSet、数据库连接字符串),在项目根目录执行:
dotnet-ef migrations add InitialCreate --project 你的实体类库项目名 --startup-project 你的启动项目名
- 若DbContext在启动项目中,可省略
--project参数;使用Visual Studio包管理器控制台的话,执行:
首次生成迁移时,提示“可能丢失数据”直接确认即可(无现有业务表,不存在数据风险)。Add-Migration InitialCreate -Project 你的实体类库项目名 -StartupProject 你的启动项目名
2. 应用迁移到数据库
执行命令将迁移同步到数据库:
dotnet-ef database update InitialCreate --project 你的实体类库项目名 --startup-project 你的启动项目名
或包管理器控制台命令:
Update-Database InitialCreate -Project 你的实体类库项目名 -StartupProject 你的启动项目名
三、修复仅生成__efMigrationsHistory表/提示表不存在的问题
- 检查DbContext配置:确认已添加对应实体的
DbSet属性(如public DbSet<User> Users { get; set; }),且OnModelCreating方法中未遗漏实体映射配置。 - 校验迁移文件:打开Migrations文件夹下的迁移文件,查看
Up()方法是否包含业务表的创建代码。如果为空,删除当前迁移文件,重新执行生成迁移命令。 - 开发环境下可直接删除数据库中的
__efMigrationsHistory表,然后重新生成并应用迁移(生产环境需谨慎操作)。
内容的提问来源于stack exchange,提问作者Samra
相关产品推荐
相关产品推荐

