"No executable found matching command dotnet-ef" EF Core 数据库优先错误
"No executable found matching command dotnet-ef" error with EF Core database-first
如您所知,最新版本的 Visual Studio 2017 放弃了 'project.json' 并使用 .csproj
代替。
我正在使用 RTM 版本并希望根据 this guide 从现有数据库生成模型。我在最后一步出错了:
The Entity Framework Core commands for the Package Manager Console don't yet support csproj-based .NET Core projects. Use the .NET Command Line Tools (i.e. dotnet ef) instead. For more details, see https://go.microsoft.com/fwlink/?linkid=834381.
报错后,我用它提到的link切换到dotnet ef
。这是我的包管理器命令:
PM> dotnet ef dbcontext scaffold "Server=.;Database=Jumpstart;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
然后错误又来了:
dotnet : No executable found matching command "dotnet-ef"
我用了help命令,发现dotnet没有叫ef的命令。
我只想从现有数据库生成模型。
学习本教程
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations
我遇到了同样的问题。刚刚在 .csproj 中编辑了 ItemGroup 部分
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
我的问题已通过将 tools
更改为:
得到解决
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
然后执行这两个命令:
dotnet restore
- 恢复包
- dotnet ef 迁移
在 NetCore 2.0 上,您只需 运行 Add-Migrations
。
它会询问一个名字,仅此而已。请确保您在 appsettings.json
上有默认连接字符串
我解决了问题
在所有答案中都提到添加 Tools DotNet 但没有解决我的问题,因为错过了我在下面提到的一些命令
通过手动编辑 *.csproj 文件安装 EF Core .NET 命令行工具。
添加 Microsoft.EntityFrameworkCore.Tools.DotNet 作为 DotNetCliToolReference。请参阅下面的示例项目。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
核心版本 2 更改了版本
但在那之后也应该运行 2个命令
然后 importatn 部分丢失所有答案(此命令解决了我在 visuall studio 2017 中的问题)
1 - 执行 dotnet add package Microsoft.EntityFrameworkCore.Design
2 - 执行 dotnet restore
。如果还原不成功,可能是工具没有正确安装。
更多信息
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
接受的答案是错误消息的最可能原因。但是,除了在 .csproj
文件中添加正确的引用外,还要 确保 Package Manager Console
中的当前目录指向 ASP.NET 核心项目 ,否则任何 dotnet ef
命令将失败并出现 OP 标题中提到的错误。
如您所知,最新版本的 Visual Studio 2017 放弃了 'project.json' 并使用 .csproj
代替。
我正在使用 RTM 版本并希望根据 this guide 从现有数据库生成模型。我在最后一步出错了:
The Entity Framework Core commands for the Package Manager Console don't yet support csproj-based .NET Core projects. Use the .NET Command Line Tools (i.e. dotnet ef) instead. For more details, see https://go.microsoft.com/fwlink/?linkid=834381.
报错后,我用它提到的link切换到dotnet ef
。这是我的包管理器命令:
PM> dotnet ef dbcontext scaffold "Server=.;Database=Jumpstart;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
然后错误又来了:
dotnet : No executable found matching command "dotnet-ef"
我用了help命令,发现dotnet没有叫ef的命令。
我只想从现有数据库生成模型。
学习本教程
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations
我遇到了同样的问题。刚刚在 .csproj 中编辑了 ItemGroup 部分
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
我的问题已通过将 tools
更改为:
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
然后执行这两个命令:
dotnet restore
- 恢复包- dotnet ef 迁移
在 NetCore 2.0 上,您只需 运行 Add-Migrations
。
它会询问一个名字,仅此而已。请确保您在 appsettings.json
上有默认连接字符串我解决了问题
在所有答案中都提到添加 Tools DotNet 但没有解决我的问题,因为错过了我在下面提到的一些命令
通过手动编辑 *.csproj 文件安装 EF Core .NET 命令行工具。
添加 Microsoft.EntityFrameworkCore.Tools.DotNet 作为 DotNetCliToolReference。请参阅下面的示例项目。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
</ItemGroup>
核心版本 2 更改了版本 但在那之后也应该运行 2个命令
然后 importatn 部分丢失所有答案(此命令解决了我在 visuall studio 2017 中的问题)
1 - 执行 dotnet add package Microsoft.EntityFrameworkCore.Design
2 - 执行 dotnet restore
。如果还原不成功,可能是工具没有正确安装。
更多信息 https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
接受的答案是错误消息的最可能原因。但是,除了在 .csproj
文件中添加正确的引用外,还要 确保 Package Manager Console
中的当前目录指向 ASP.NET 核心项目 ,否则任何 dotnet ef
命令将失败并出现 OP 标题中提到的错误。