找不到匹配命令"dotnet-ef"(Csproj)的可执行文件

Yan*_*ins 4 macos entity-framework-core asp.net-core-mvc visual-studio-code asp.net-core

我使用VS Code和ASP.NET Core MVC在Mac上启动了一个项目,这是我的csproj:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.0" />

    <PackageReference Include="System.Data.SqlClient" Version="4.3.0" />

    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我总是得到"找不到匹配命令的可执行文件"dotnet-ef""

我在Windows 10上尝试过,我得到了相同的结果.

我错过了什么?

Yan*_*ins 11

添加此项以使其工作:

 <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version = "1.0.0"/>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)


Mar*_*ana 5

  1. 从包含csproj文件的文件夹内部,将以下内容添加到csproj文件中:

    <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion>
    </PropertyGroup>
    
    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    </ItemGroup>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在,通过执行以下命令来包含所需的依赖项:

    dotnet add package Microsoft.EntityFrameworkCore dotnet add package Microsoft.EntityFrameworkCore.Design dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Tools.DotNet

  3. 还原项目,以便检查所有依赖项 dotnet restore

  4. 为了确保一切正常,请运行以下命令 dotnet ef dotnet ef出现带有基本命令用法的屏幕

  5. 检查项目是否仍在构建中: dotnet build

  6. 使用以下命令从数据库生成支架:

dotnet ef dbcontext scaffold "Server=<your_server_address[,port_number]>;Initial Catalog=<your_db>;User Id=<your_user>;Password=<your_password>" Microsoft.EntityFrameworkCore.SqlServer -f -c YourDbContext -o Db --json

上面的命令可以描述为负责读出数据库并生成脚手架poco实体类和dbcontext文件的命令。它需要一个基本的工作连接字符串,该参数f强制覆盖,c为上下文提供名称,o确定所创建类的输出文件夹和名称空间,并且该json参数将命令结果以json而不是零粗壮的形式输出。

最好保留此命令,以便在必须将数据库中的更改反映到ORM时使用