C# 添加迁移失败,因为未安装EntityFrameworkCore.Tools
我想通过以下教程创建一个带有EF Core的控制台应用程序: 我的问题是,我无法执行该语句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
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…谢谢!