【问题标题】:Class library wth EF core 2.1 ? No executable found matching command "dotnet-ef"带有 EF 核心 2.1 的类库?找不到与命令“dotnet-ef”匹配的可执行文件
【发布时间】:2018-11-18 21:29:06
【问题描述】:

我正在尝试使用 EF 核心 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/

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:

    从 .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。

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多