类库与EF核心2.1?找不到匹配命令“dotnet-ef”

时间:2018-06-08 19:12:24

标签: entity-framework-core

我尝试使用EF core 2.1设置类库项目,并使用.NET核心api项目中的这个类库。当我尝试将我的模式反向工程为dbcontext时,我收到错误抱怨缺少EF命令。

类库csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />

  </ItemGroup>

</Project>

donet命令

dotnet ef dbcontext scaffold "Server=.;Database=MyDb;user id=my-user;password=my-pwd;" Microsoft.EntityFrameworkCore.SqlServer -c LastMileContext -o Data

错误:

No executable found matching command "dotnet-ef"

因此,在阅读了其他一些线程之后,我将我的csproj文件更改为在ItemGroup部分中显示为

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

现在EF命令运行,我得到了我的实体类。我的问题是为什么我还要手动添加一些东西到csproj文件?没有别的办法吗?是推荐的方式吗?好像我错过了一个dotnet命令步骤或什么?

此外,看起来我不是唯一一个遇到这些问题的人 https://fpnotebook.wordpress.com/2017/11/12/solution-entity-framework-core-and-net-core-class-libraries-2-0/

1 个答案:

答案 0 :(得分:2)

从.NET Core SDK 2.1.300开始,cli支持所谓的.NET Core Global Tools,无需手动将这些工具添加到csproj文件中。

您只需拨打dotnet tool install -g toolname,就像在npm中一样。您可以在此repo中找到有关可用工具的一些信息。

dotnet ef已包含在2.1.300 SDK CLI中。

我建议您download并为此全局工具支持安装.NET Core SDK 2.1.300,但如果您没有计划迁移到.NET Core 2.1,仍会使用.NET Core 2.0