.NET Core SDK 2.1.4中dotnet-ef命令缺失及无项目执行EF Scaffold问题
关于EF Core命令集成及无项目Scaffold的问题解答
刚接触.NET Core EF Core确实会遇到这种小问题,别着急,我来一步步给你讲清楚:
一、解决「dotnet-ef」命令找不到的问题
你用的是.NET Core 2.1这个早期版本,EF Core工具在这个版本里并没有默认集成到SDK中,需要手动配置,有两种常用方式:
1. 全局安装EF Core工具(适合个人开发)
打开命令行终端,执行以下命令安装对应版本的工具:
dotnet tool install --global dotnet-ef --version 2.1.4
👉 注意:版本号必须和你安装的.NET Core SDK 2.1.4完全对应,避免兼容性问题。安装完成后,记得重启一下命令行,再执行dotnet ef -h就能看到帮助信息了。
2. 项目本地配置(适合团队协作)
如果是团队项目,不想让每个成员都单独安装全局工具,可以把工具依赖配置到项目里:
- 先在项目根目录创建
DotNetCliToolReference文件夹(如果没有的话) - 在这个文件夹里新建
Microsoft.EntityFrameworkCore.Tools.DotNet.csproj文件,写入以下内容:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.4" /> </ItemGroup> </Project>
- 回到项目根目录执行
dotnet restore恢复依赖,之后就能在这个项目里正常使用dotnet ef命令了。
二、无项目情况下能否执行EF Core Scaffold?
很遗憾,不可以。EF Core的Scaffold命令需要依托一个.NET项目来运行,因为它要生成的实体类、DbContext类需要和项目的目标框架、数据库提供者依赖包(比如SQL Server、MySQL对应的EF包)匹配。
如果想尝试Scaffold功能,可以先快速创建一个基础项目:
# 创建一个控制台项目 dotnet new console -n MyEFScaffoldDemo cd MyEFScaffoldDemo
然后添加EF Core和对应数据库的依赖包(以SQL Server为例):
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 2.1.4 dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.4
之后就可以执行Scaffold命令生成代码了,示例如下:
dotnet ef dbcontext scaffold "Server=你的数据库服务器地址;Database=目标数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
内容的提问来源于stack exchange,提问作者dgxhubbard
相关产品推荐
相关产品推荐

