Visual Studio Mac预览实体框架SQLite添加迁移

时间:2016-11-28 17:28:56

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

我今天安装了Visual Studio for Mac(OSX 10.12.1),而且我已经进行了相当广泛的潜水。

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

所以我创建了一个新的控制台应用程序.NET核心,并且有一些麻烦能够添加所有必需的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”

的可执行文件

有人能够成功运行吗?

5 个答案:

答案 0 :(得分:9)

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脚本。

N.B。:执行命令时,您必须在项目目录中。

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

答案 1 :(得分: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。

运行&#34; dotnet ef&#34;通过终端命令,你需要在项目目录中,我的意思是不是从.sln文件所在的目录,而是从较低级别。

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

答案 2 :(得分:0)

检查project.json文件中是否包含此部分,如果缺少则添加该部分。

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

这适用于EF 1.1,之前的版本使用Microsoft.EntityFrameworkCore.Tools

答案 3 :(得分:0)

如果不添加此ItemGroup,则无法添加dbcontext scaffold连接字符串使用cmd,因此在项目中添加此项(编辑.csproj)首先

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

答案 4 :(得分:0)

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

dotnet tool install --global dotnet-ef