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

EF Core 3.1代码优先迁移遇异常,求正确执行命令

EF Core 3.1 代码优先迁移正确命令及问题修复

一、解决dotnet-ef命令不识别的问题

执行dotnet-ef migrations add [migrationName]提示“Unrecognized command or argument 'dotnet-ef'”时,按以下步骤处理:

  • 全局安装匹配版本的EF Core工具:
    dotnet tool install --global dotnet-ef --version 3.1.32
    
    (版本需和项目中EF Core NuGet包的3.1.x版本保持一致)
  • 重启终端或确认工具已加入系统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表/提示表不存在的问题

  1. 检查DbContext配置:确认已添加对应实体的DbSet属性(如public DbSet<User> Users { get; set; }),且OnModelCreating方法中未遗漏实体映射配置。
  2. 校验迁移文件:打开Migrations文件夹下的迁移文件,查看Up()方法是否包含业务表的创建代码。如果为空,删除当前迁移文件,重新执行生成迁移命令。
  3. 开发环境下可直接删除数据库中的__efMigrationsHistory表,然后重新生成并应用迁移(生产环境需谨慎操作)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:05:20