关于实体框架:术语“ scaffold-dbcontext”未被识别为cmdlet,函数,脚本文件或可运行程序的名称

The term 'scaffold-dbcontext' is not recognized as the name of a cmdlet, function, script file, or operable program

当尝试使用asp.net core搭建支架时,此命令

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

给出此错误。

scaffold-dbcontext : The term 'scaffold-dbcontext' is not recognized
as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify
that the path is correct and try again. At line:1 char:1
+ scaffold-dbcontext"Data Source=(local);Initial Catalog=MyDB;In ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (scaffold-dbcontext:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

我在这里尝试过该解决方案,但对我不起作用。

知道原因/治愈可能是什么?


对我来说,显然,一旦我还运行了Package Manager控制台,它就会起作用:

1
 Install-Package Microsoft.EntityFrameworkCore.Tools

另外请确保:

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

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

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

Unable to find provider assembly with name
Microsoft.EntityFrameworkCore.SqlServer. Ensure the specified name is
correct and is referenced by the project.

我可以通过将类库设置为VS中的Startup项目来解决此问题(不要问为什么看起来没有意义,但它起作用了)。

后期编辑,还有其他事情要知道:您不能对仅针对.Net Standard的类库运行Scaffold-DbContext,还必须在其中启用netcoreapp,否则Scaffold-DbContext会抱怨。
要同时支持这两个目标,请编辑csproj:netcoreapp2.2;netstandard2.0
代替部分。

完成所有这些操作后,您将可以使用正确的参数和连接字符串运行Scaffold-DbContext命令行。


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

  • 在程序包管理器控制台中运行命令
  • enter image description here

    就可以了


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

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


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

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

    enter image description here

    希望这会有所帮助。 :)


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


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

    enter image description here

    所需的包装参考:

    1
    2
    3
    4
    <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"/>

    因此,我们的脚手架命令应如下所示:

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

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


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

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


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

    例如C:\ App \ ProjectName:

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

    最近,我遇到了另一个导致此错误的原因:NuGet本身已过时。

    更新NuGet解决了该问题。

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


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

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

    错误:

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

    好:

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

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

    https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/existing-db