Scaffold-DbContext: 找不到该命令

9
我尝试从现有数据库中反向工程化我的模型,但命令:Scaffold-DbContext "Server=(db);Database=xxxx;Trusted_connection=true;" Microsoft.EntityFrameWorkCore.SqlServer -OutputDir Models无法运行。我收到了与标题中类似的错误消息。我已安装Nuget软件包:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer.Design

我不知道为什么它不起作用。(dotnet ef命令可以运行) 我确定这是一个小问题,但我找不到解决方法。请帮帮我。
我的.csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="IdentityServer4">
      <Version>1.5.0</Version>
    </PackageReference>
    <PackageReference Include="IdentityServer4.AccessTokenValidation">
      <Version>1.2.0</Version>
    </PackageReference>
    <PackageReference Include="IdentityServer4.AspNetIdentity">
      <Version>1.0.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Identity">
      <Version>1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore">
      <Version>1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore">
      <Version>1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer">
      <Version>1.1.2</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design">
      <Version>1.1.2</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools">
      <Version>1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
  </ItemGroup>
  <ItemGroup>
      <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
    </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
  </ItemGroup>
</Project>
3个回答

10

这对我有用

使用dotnet ef dbcontext scaffold而不是Scaffold-DbContext

例如

dotnet ef dbcontext scaffold "Host=my_host;Database=my_db;Username=my_user;Password=my_pw" Npgsql.EntityFrameworkCore.PostgreSQL -c ContextName -o OutPutFolder 

运行 dotnet ef dbcontext scaffold -h 以查看可以传递的选项!


我需要使用 "dotnet-ef"。 - Andrew

8
在程序包管理器控制台中运行以下命令,安装 Microsoft EntityFrameworkCore 工具 nuget 包到你的项目中。
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.2

通过包管理器控制台安装Cmdlets,以运行基于数据库的优先方法。有关详细信息,请访问https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/


4

修改.csproj文件,包含以下部分:

<ItemGroup>
    <DotNetCliToolReference
        Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
        Version="1.0.0-msbuild3-final" />
</ItemGroup>

如果在安装Tools包时未自动修改.csproj文件以添加条目,则需要执行此步骤。参见https://github.com/aspnet/EntityFramework/issues/7358

还原包:

dotnet restore

现在,请检查您的 dotnet ef dbcontext scaffold 命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接