Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Visual Studio Mac预览实体框架SQLite添加迁移_Macos_Visual Studio_Entity Framework Core_.net Core - Fatal编程技术网

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

Macos Visual Studio Mac预览实体框架SQLite添加迁移,macos,visual-studio,entity-framework-core,.net-core,Macos,Visual Studio,Entity Framework Core,.net Core,今天我已经安装了Visual Studio for Mac(OSX 10.12.1),而且我已经投入了相当广泛的精力 我想尝试让EntityFrameworkCore(1.1.0)与SQLite一起运行 因此,我创建了一个新的控制台应用程序.NETCore,并且在添加所有必要的nuget包时遇到了一些麻烦。不知何故,VisualStudio无法下载依赖项,因此我必须手动下载每个依赖项。(也许这就解决了问题:还没有测试过这个。) 如本文()所述,我想添加迁移,但在IDE中找不到必要的命令行工具。

今天我已经安装了Visual Studio for Mac(OSX 10.12.1),而且我已经投入了相当广泛的精力

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

因此,我创建了一个新的控制台应用程序.NETCore,并且在添加所有必要的nuget包时遇到了一些麻烦。不知何故,VisualStudio无法下载依赖项,因此我必须手动下载每个依赖项。(也许这就解决了问题:还没有测试过这个。)

如本文()所述,我想添加迁移,但在IDE中找不到必要的命令行工具。 我错过什么了吗

然后,我继续使用.NET Core CLI通过手动执行。安慰( ). 但是当我执行
dotnet ef migrations add init
时,我得到以下错误

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


是否有人能够成功运行此功能?

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

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

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

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
文件,如下所示。将此添加到您的csproj文件:

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

然后运行
dotnet restore
安装该软件包。之后,您将能够根据文档使用
dotnet ef migrations add NameOfMigration
dotnet ef database update
脚本

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

另请参见针对Mac的VS 2017的建议反馈:


使用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文件所在的目录,而是从较低的级别


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

如果不添加此ItemGroup,则无法添加使用cmd的dbcontext脚手架连接字符串,因此请先在项目(Edit.csproj)中添加它


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


dotnet工具安装--global dotnet ef

我遇到了类似的问题,并且能够从package manager控制台执行scaffold。在我的例子中,DB是PostgreSQL。他说的是针对Mac的Visual Studio,而不是Visual Studio代码。在Visual Studio for Mac中没有
project.json
文件。您好,miha,谢谢您的详细回答。我一开始就会尝试。我仍然遇到问题,但主要是在dotnet cli上。无论如何,谢谢你,如果我知道更多,我会在这里扩展。
 <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>