【问题标题】:Visual Studio Mac Preview Entity Framework SQLite add migrationVisual Studio Mac Preview Entity Framework SQLite 添加迁移
【发布时间】:2019-09-26 02:59:55
【问题描述】:

我今天已经安装了 Visual Studio for Mac (OSX 10.12.1),我已经深入研究了。

我想尝试让 EntityFrameworkCore (1.1.0) 与 SQLite 一起运行。

所以我创建了一个新的控制台应用程序 .NET Core,并且遇到了一些麻烦,能够添加所有必要的 nuget 包。不知何故,Visual Studio 无法下载依赖项,所以我不得不手动下载每个依赖项。 (也许这可以解决问题:.Net Core 1.1.0 NuGet packages fail to install in Visual Studio Mac还没有测试这个。)

如本文 (https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite) 中所述,我想添加迁移,但在 IDE 中找不到必要的命令行工具。 我错过了什么吗?

然后我继续使用 .NET Core CLI 手动完成。安慰。 (https://www.microsoft.com/net/core#macos)。但是当我执行dotnet ef migrations add init 时出现以下错误。

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

有没有人能够让它成功运行?

【问题讨论】:

  • 我遇到了类似的问题,并且能够从包管理器控制台做一个脚手架。就我而言,数据库是 PostgreSQL。

标签: macos visual-studio entity-framework-core .net-core


【解决方案1】:

Visual Studio for Mac 2017 目前(2017 年 4 月)不支持添加对 Microsoft.EntityFrameworkCore.Tools.DotNet 的引用并返回错误:

Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'DotnetCliTool' that is not supported by project 'MacMvc'.

您可以手动编辑文件并将引用直接添加到csproj 文件,如documented。将此添加到您的 csproj 文件中:

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

然后运行dotnet restore 安装包。之后,您将能够按照文档使用dotnet ef migrations add NameOfMigrationdotnet ef database update 脚本。

注意:执行命令时必须在项目目录中。

另请参阅 VS 2017 for Mac 的建议反馈:

【讨论】:

  • 您好 miha,感谢您提供有据可查的答案。我会尽快尝试一下。
  • 我仍然遇到问题,但主要是 dotnet cli。无论如何,谢谢,如果我知道更多,我会在这里扩展。
【解决方案2】:

使用 VS for Mac,将以下几行添加到 .csproj 使迁移对我有用:

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" />

从 VS 保存 .csproj 后,包将自动恢复。

要通过终端运行“dotnet ef”命令,需要在项目目录下,我的意思不是从.sln文件所在的目录,而是从下层。

注意:与 v1.0.1 的 Tools.DotNet 相同的技巧不起作用,我不知道为什么。

【讨论】:

    【解决方案3】:

    检查您的 project.json 文件中是否有此部分,如果缺少则添加它。

    "tools": {
       "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
     }
    

    这对 EF 1.1 有效,之前的版本使用 Microsoft.EntityFrameworkCore.Tools

    【讨论】:

    • 他说的是 Visual Studio for Mac,而不是 Visual Studio Code。在 Visual Studio for Mac 中没有 project.json 文件。
    【解决方案4】:

    不添加这个ItemGroup,无法添加cmd的dbcontext脚手架连接字符串使用,所以先在你的项目中添加这个(编辑.csproj)

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

    【讨论】:

      【解决方案5】:

      对我来说,这解决了 macOS 上的问题,在任何终端上运行它:

      dotnet tool install --global dotnet-ef

      【讨论】:

        猜你喜欢
        • 2015-10-17
        • 2017-02-06
        • 1970-01-01
        • 2019-01-11
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多