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

时间:2016-09-12 16:08:50

标签: entity-framework asp.net-core

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

  

scaffold-dbcontext"数据源=(本地);初始   目录= MyDb;综合安全性=真;"   Microsoft.EntityFrameworkCore.sqlserver -outputdir模型

给出了这个错误。

  

scaffold-dbcontext:术语' scaffold-dbcontext'不被承认   作为cmdlet,函数,脚本文件或可运行程序的名称。   检查名称的拼写,或者如果包含路径,请验证   路径是正确的,然后再试一次。在行:1个字符:1   + scaffold-dbcontext"数据源=(本地);初始目录= MyDB;在......   + ~~~~~~~~~~~~~~~~~~       + CategoryInfo:ObjectNotFound:(scaffold-dbcontext:String)[],CommandNotFoundException       + FullyQualifiedErrorId:CommandNotFoundException

我尝试过解决方案here,但它对我不起作用。

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

10 个答案:

答案 0 :(得分:50)

对我来说,一旦在Package Manager控制台中运行,它就可以正常工作

 Install-Package Microsoft.EntityFrameworkCore.Tools 

还请确保:

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

  • 要在PM控制台的右上角选择正确的程序集作为命令的目标(我常常被它遗忘了……)

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

  

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

我可以通过将类库设置为VS中的Startup项目来解决此问题(不问为什么,但它可以工作)。

答案 1 :(得分:12)

  1. 确保在project.json文件" Microsoft.EntityFrameworkCore.Tools.DotNet":" 1.0.0-preview3-final"中可用。
  2. enter image description here

    1. 在程序包管理器控制台中运行该命令
    2. enter image description here

      它会发挥作用

答案 2 :(得分:12)

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

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

答案 3 :(得分:12)

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

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

enter image description here

希望这会有所帮助。 :)

答案 4 :(得分:3)

Scaffold命令是EF中dbcontext命令的一部分。以下是成功完成scaffold的详细信息:

enter image description here

所需的包装参考:

<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"/>

因此我们的支架命令应类似于:

dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory

根据您的Db服务器名称,您的Server值可能有所不同。将MyDatabase替换为您的数据库名称(例如masterOutputDirectory)到您想要新创建的脚手架类(例如Models文件夹)的位置。

答案 5 :(得分:2)

我已经从NuGet软件包管理器安装了Microsoft.EntityFrameworkCore.Tools,它在已安装的软件包中可见。但是我一直收到这个错误。

重新启动Visual Studio(2019 /版本16.4.4)已为我修复了该问题。

答案 6 :(得分:1)

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

答案 7 :(得分:0)

我最近遇到了这个错误的另一个原因:NuGet本身已经过时了。

更新NuGet解决了这个问题。

如果Devanathan的回答对您不起作用,请检查以确保NuGet本身是最新的。

答案 8 :(得分:0)

如果您使用的是.NetCore 2.2,则在命令提示符或Git Bash上,以下命令对我来说就像是一种魅力。在运行命令之前,请确保您直接位于项目文件夹中。

例如C:\ App \ ProjectName:

 dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model

答案 9 :(得分:-1)

对我来说...从Microsoft文档复制粘贴命令时,由于某种原因,在连字符之间添加了额外的空格。

删除连字符可解决此问题:

错误:

Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models

好:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

文档还说如果收到此错误,请尝试重新启动Visual Studio。

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db