【问题标题】:"No executable found matching command dotnet-ef" error with EF Core database-firstEF Core 数据库优先出现“找不到与命令 dotnet-ef 匹配的可执行文件”错误
【发布时间】:2017-03-20 07:41:52
【问题描述】:

如您所知,最新版本的 Visual Studio 2017 放弃了“project.json”并改用.csproj。

我正在使用 RTM 版本并想从现有数据库生成模型,遵循 this guide。最后一步出现错误:

包管理器控制台的 Entity Framework Core 命令尚不支持基于 csproj 的 .NET Core 项目。请改用 .NET 命令行工具(即 dotnet ef)。详情请见https://go.microsoft.com/fwlink/?linkid=834381。

出现错误后,我使用它提到的链接切换到dotnet ef。这是我的包管理器命令:

PM> dotnet ef dbcontext scaffold "Server=.;Database=Jumpstart;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

然后错误又来了:

dotnet : 找不到匹配命令“dotnet-ef”的可执行文件

我用了help命令,发现dotnet没有一个叫ef的命令。

我只想从现有数据库生成模型。

【问题讨论】:

  • 能否请您专注于您的问题的主要主题 - 最终改写它并把它放在第一位?
  • 您可以使用我的 VS 扩展,并避免使用脚手架工具污染您的代码:twitter.com/ErikEJ/status/834452863380250624
  • 假设您遵循了在您的 csproj 中添加 参考的说明,您可以尝试只打开一个命令提示并使用 .csproj 切换到目录并在那里运行命令。我无法让它与 VS PS 提示符一起工作,但 cmd.exe 很好。
  • #37276882 的可能重复项:简而言之,您需要手动编辑项目配置文件并添加对 Tools / Tools.DotNet 包的引用(因为 VS2015/VS2017 不会这样做自动地)。欲了解更多信息,read here。

标签: visual-studio entity-framework dbcontext database-first


【解决方案1】:

按照本教程进行操作

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

我遇到了同样的问题。刚刚像这样编辑了 .csproj 中的 ItemGroup 部分

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

【讨论】:

  • 为什么当我们通过 Nuget 添加这个包时它不起作用?!
【解决方案2】:

接受的答案是错误消息的最可能原因。但是,除了在.csproj 文件中添加正确的引用之外,还确保Package Manager Console 中的当前目录指向 ASP.NET Core 项目,否则任何dotnet ef 命令都会失败并出现上述错误在 OP 标题中。

【讨论】:

    【解决方案3】:

    我的问题已通过将tools 更改为:

    "tools": {
        "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
        "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
      },
    

    然后执行这两条命令:

    1. dotnet restore - 恢复包
    2. dotnet ef 迁移

    【讨论】:

      【解决方案4】:

      我解决了问题

      在所有提到添加工具 DotNet 的答案中,但没有解决我的问题,因为错过了我在下面提到的一些命令

      EF Core .NET 命令行工具是通过手动编辑 *.csproj 文件来安装的。

      将 Microsoft.EntityFrameworkCore.Tools.DotNet 添加为 DotNetCliToolReference。请参阅下面的示例项目。

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

      对于核心版本 2 更改了版本 但之后也应该运行 2 个命令

      然后 importatn 部分缺少所有答案(此命令解决了我在 Visuall Studio 2017 中的问题)

      1 - 执行dotnet add package Microsoft.EntityFrameworkCore.Design

      2 - 执行dotnet restore。如果还原不成功,可能是工具没有正确安装。

      更多信息 https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

      【讨论】:

        【解决方案5】:

        在 NetCore 2.0 上,您只需要运行 Add-Migrations。

        它会要求一个名字,仅此而已。只要确保你在 appsettings.json 上有一个默认的连接字符串

        【讨论】:

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