Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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
C# 添加迁移失败,因为未安装EntityFrameworkCore.Tools_C#_Entity Framework_Entity Framework Core_.net Core - Fatal编程技术网

C# 添加迁移失败,因为未安装EntityFrameworkCore.Tools

C# 添加迁移失败,因为未安装EntityFrameworkCore.Tools,c#,entity-framework,entity-framework-core,.net-core,C#,Entity Framework,Entity Framework Core,.net Core,我想通过以下教程创建一个带有EF Core的控制台应用程序: 我的问题是,我无法执行该语句 Add-Migration 如教程中所述。它告诉我: PM> Add-Migration MyFirstMigration Cannot execute this command because 'Microsoft.EntityFrameworkCore.Tools' is not installed in project 'src\AppEf'. Add 'Microsoft.EntityF

我想通过以下教程创建一个带有EF Core的控制台应用程序:

我的问题是,我无法执行该语句

Add-Migration 
如教程中所述。它告诉我:

PM> Add-Migration MyFirstMigration
Cannot execute this command because 'Microsoft.EntityFrameworkCore.Tools' is not installed in project 'src\AppEf'. Add 'Microsoft.EntityFrameworkCore.Tools' to the 'tools' section in project.json. See http://go.microsoft.com/fwlink/?LinkId=798221 for more details.
所有添加的程序集:

怎么了

更新

语句
dotnet restore
起作用,而
dotnet ef--help
根本不起作用。


您可以看到,该语句在项目文件夹中执行

一些人在评论中提到,
Microsoft.EntityFrameworkCore.Tools
需要添加到project.json的
Tools
部分

我已经用最新(2016年7月)版本的EF Core和工具包测试了这个project.json,它可以工作:

{
    "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.Design": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    }
  },
  "frameworks": {
    "netcoreapp1.0": {}
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },
  "version": "1.0.0-*"
}
要使用它,请在项目文件夹内执行以下命令:

λ dotnet restore
log  : Restore completed in 2810ms.

λ dotnet ef --help
Compiling EfCoreTester2 for .NETCoreApp,Version=v1.0                                                                            
Compilation succeeded.                                                                                                          
    0 Warning(s)                                                                                                                
    0 Error(s)                                                                                                                  
Time elapsed 00:00:01.7208394                                                                                                   

Entity Framework .NET Core CLI Commands 1.0.0-preview2-21431
Usage: dotnet ef [options] [command]
Options:
  -h|--help                      Show help information
  -v|--verbose                   Enable verbose output
  --version                      Show version information
(... etc)

起初,我没有找到与命令“dotnet ef”匹配的可执行文件,直到我意识到必须从项目文件夹中执行命令(在我的例子中是
src\projectName
)。如果您尝试从解决方案根目录执行此操作,它将不起作用。

我最终使用了这样的包配置

"dependencies": {
  "Microsoft.NETCore.App": {
    "version": "1.0.1",
    "type": "platform"
  },
  "Microsoft.EntityFrameworkCore.Design": "1.0.1",
  "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
  ...
}

"tools": {
  "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview3-final",
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final"
},
这个命令有效

Scaffold-DbContext
    "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=<DB name>;Integrated Security=True;"
    "Microsoft.EntityFrameworkCore.SqlServer"
    -OutputDir Entities
    -Context "ApplicationDbContext"
    -DataAnnotations
    -Force
    -Project <Project name>.Data
    -StartupProject <Project name>.Api
DbContext
“数据源=(localdb)\MSSQLLocalDB;初始目录=;集成安全性=True;”
“Microsoft.EntityFrameworkCore.SqlServer”
-OutputDir实体
-上下文“ApplicationDbContext”
-数据注释
-强迫
-项目.数据
-StartupProject.Api

这里,我将一个上下文构建到一个单独的类库项目中,该项目名为
Data
,其中web应用程序是
Api

,根据您的屏幕截图,在
project.json
中的
依赖项下列出了
Microsoft.EntityFrameworkCore.Tools
。消息告诉您的是它需要在
工具下。(可能应该在这两个地方都有-不确定我是否仍在迁移到RTM的过程中。)那么我必须做什么呢?您需要编辑
project.json
。添加一个“tools”对象/部分并添加“Microsoft.EntityFrameworkCore.tools”。我这样做并尝试编译,结果显示
找不到路径“C:\Users\user\.nuget\packages\.tools\Microsoft.EntityFrameworkCore.SqlServer”的一部分。
听起来像是project.json中的语法错误(如果是这样,很可能是一个缺少的或无关的逗号)?解决方案资源管理器现在看起来是什么样子?因为这个答案没有被标记为正确(在撰写本文时)-如果您正在学习EF反向工程教程,并且没有正确阅读说明,那么它就是正确的答案(我浏览了那一部分,以为它只是向您展示了引用的位置)-那么,我们是从默认项目下拉列表中选择项目,还是在命令行中键入项目文件夹?thanks@Kleky我是从PowerShell运行这些命令,而不是从集成控制台窗口运行。是的,诀窍是“cd”进入项目文件夹,然后运行dotnet ef…谢谢!