术语"scaffold-dbcontext"未被识别为cmdlet,函数,脚本文件或可操作程序的名称

sim*_*831 44 entity-framework asp.net-core

当尝试使用asp.net核心这个命令进行脚手架时

scaffold-dbcontext"Data Source =(local); Initial Catalog = MyDb; Integrated Security = True;" Microsoft.EntityFrameworkCore.sqlserver -outputdir模型

给出了这个错误.

scaffold-dbcontext:术语"scaffold-dbcontext"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.at line:1 char:1 + scaffold-dbcontext"Data Source =(local); Initial Catalog = MyDB; In ... + ~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound:(scaffold-dbcontext:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

我在这里尝试了解决方案,但它对我不起作用.

知道原因/治疗方法是什么吗?

AFr*_*act 97

对我来说,一旦我在Package Manager控制台中运行,它显然有效

 Install-Package Microsoft.EntityFrameworkCore.Tools 
Run Code Online (Sandbox Code Playgroud)

还要确保:

  • 要根据您的需要引用其他依赖项(例如Microsoft.EntityFrameworkCore,Microsoft.EntityFrameworkCore.SqlServer,Microsoft.EntityFrameworkCore.SqlServer.Design ...).

  • 在PM控制台的右上角选择正确的程序集作为命令的目标(我常常被遗忘所欺骗...)

我遇到的另一个问题:dbcontext位于一个单独的类库中,我遇到了以下错误:

无法找到名为Microsoft.EntityFrameworkCore.SqlServer的提供程序程序集.确保指定的名称正确并由项目引用.

通过在VS中将我的类库设置为启动项目,我能够解决这个问题(不要问为什么,但它有效).

  • 可惜微软在过去的几个月里没有对此进行改进。我没想到我的答案会如此有帮助,而且只要它的某些部分似乎是解决某些奇怪的 IDE 行为的棘手解决方法...... (3认同)
  • 谢谢你 您的解决方案仍然适用于使用.net core 2.2的VS2019 (2认同)
  • 我遇到了错误:无法找到名称为 Microsoft.EntityFrameworkCore.SqlServer 的提供程序集。确保指定的名称正确并且被项目引用。我还必须运行:Install-Package Microsoft.EntityFrameworkCore.SqlServer (2认同)
  • @AhmedFaizan 实际上它是帖子中提到的软件包示例之一。很高兴有帮助 (2认同)
  • NET Core 3.1 需要,但 mysql 官方文档不需要,必须安装它才能首先使用 mysql EF core 搭建 mysql 数据库。当然要感谢。 (2认同)

eld*_*inT 29

有同样的问题。就我而言,我缺少一些依赖项,因此请确保您拥有以下依赖项:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

在此处输入图片说明

希望这会有所帮助。:)

  • 我拥有所有这 3 个,但我仍然收到“Scafford-DbContext 无法识别”错误。我尝试添加 Microsoft.EntityFrameworkCore.SqlServer.Design,但这没有帮助。 (3认同)

Moj*_*oji 18

确保以管理员身份运行VS并安装以下软件包:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.SqlServer.Design
  • Microsoft.EntityFrameworkCore.Tools

  • 对于我的类似问题,我不需要安装 Microsoft.EntityFrameworkCore.SqlServer.Design,我安装了其余部分并且它运行正常。 (3认同)

小智 12

  1. 确保这在project.json文件"Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0-preview3-final"中可用.

在此输入图像描述

  1. 在程序包管理器控制台中运行该命令

在此输入图像描述

这就是它的全部功能

  • 实际上我通过安装nuget包修复此问题:Install-Package Microsoft.EntityFrameworkCore.Tools (6认同)

小智 11

Scaffoldcommand 是dbcontextEF 中command 的一部分。以下是成功的详细信息scaffold

在此处输入图片说明

所需的包参考:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0"/>
Run Code Online (Sandbox Code Playgroud)

所以我们的脚手架命令应该是这样的:

dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory
Run Code Online (Sandbox Code Playgroud)

您的Server值可能因数据库服务器名称而异。替换MyDatabase为您的数据库名称masterOutputDirectory您想要新创建的脚手架类(如Models文件夹)的位置。


joy*_*ym8 10

我已经安装了Microsoft.EntityFrameworkCore.Tools并且NuGet Package Manager它在已安装的软件包中可见。但我一直收到这个错误。

重新启动 Visual Studio(2019/版本 16.4.4)为我解决了这个问题。


Sal*_*lim 9

对于 VS2022,它们都不起作用。

但我安装了EF

dotnet 工具安装 --global dotnet-ef

并更改了代码;

dotnet ef dbcontext 脚手架“服务器=服务器名称;数据库=数据库名称;持久安全信息=True;用户ID=XXX;密码=YYY;” Microsoft.EntityFrameworkCore.SqlServer -o 模型

我还必须安装 .Net 6.0 托管捆绑包 https://dotnet.microsoft.com/en-us/download/dotnet/6.0/runtime?cid=getdotnetcore


小智 6

确保您使用的是正确的控制台,即“包管理器控制台”。还有一个看起来非常相似的“终端”控制台,但不适用于此命令。包管理器控制台可以在视图 -> 其他窗口中找到(从 Visual Studio 2019 开始,版本 16.6.5)