2016-12-02 60 views
2

我试图用this tutorial学习ASP.NET核心的基础知识:“没有可执行找到匹配的命令‘的dotnet-EF’,”

  1. 我创建了一个ASP.NET核心的Web应用程序
  2. 我使用指令从here

现在已经升级了,我想安装项目的文件夹中使用dotnet ef migrations add Initial从命令提示符数据库迁移(其中project.json所在地):

No executable found matching command "dotnet-ef"

我已经改变project.json,使DOTNET-EF工作:

"tools": { 
... 
"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.0.0-preview1-final",     
    "imports": [ 
    "portable-net45+win8+dnxcore50", 
    "portable-net45+win8" 
    ] 
} 

现在,生成失败,出现以下错误:

The specified framework 'Microsoft.NETCore.App', version '1.0.0-rc2-3002702' was not found. - Check application dependencies and target a framework version installed at: C:\Program Files\dotnet\shared\Microsoft.NETCore.App - The following versions are installed: 1.0.0 1.0.1 1.1.0 - Alternatively, install the framework version '1.0.0-rc2-3002702'

好吧,这是有道理的,因为Microsoft.EntityFrameworkCore.Tools 1.0.0-preview1-final依赖于错误中提到的旧版本,如project.lock.json文件中所示。

我不想降级,所以我把最新版本Microsoft.EntityFrameworkCore.Tools的我能找到的:

"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.1.0-preview4-final", 
    "imports": [ 
    "portable-net45+win8+dnxcore50", 
    "portable-net45+win8" 
    ] 
}, 

这样做会导致同样的错误:

No executable found matching command "dotnet-ef"

我如何使它在1.1版本中工作?

,可能是有用的其他背景信息:

操作系统:Windows 7 64位系统 VS:2015年社区版 从project.json其他部分:

"frameworks": { 
"netcoreapp1.1": { 
    "imports": [ 
    "portable-net45+win8+dnxcore50", 
    "portable-net45+win8" 
    ] 
} 
}, 

"runtimes": { 
"win7-x64": {} 
}, 
+0

的[#37276882](https://stackoverflow.com/a/45765523/1233379)可能重复:在短的话,你需要手动编辑项目配置文件并添加对Tools/Tools.DotNet软件包的引用(因为VS2015/VS2017不会自动执行该操作)。欲了解更多信息,请[这里阅读](http://www.ryadel.com/en/no-executable-found-matching-command-dotnet-ef-error-in-visual-studio-2017-and-net-core -2- vs2017实体框架/)。 – Darkseal

回答

6

UPDATE [30/3/2017]

新软件包是

Install-Package Microsoft.EntityFrameworkCore.Tools 

ORIGINAL

尝试增加

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

另外这里是设置.NET核心1.1.0与EF核心1.1的教程。0

https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite

+0

它工作。我也缺少''Microsoft.EntityFrameworkCore.Tools“:{”version“:”1.1.0-preview4-final“' – Alexei

+0

它没有工作,尝试与编辑csproj文件 – Salim

1

Grierson的答案是好的,但以供将来参考,我会包括整个过程,直到我做了工作:

1)Tools.DotNet已经接受的答案建议

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

然相同的命令和接收:

Cannot execute this command because Microsoft.EntityFrameworkCore.Design is not installed. Install the version of that package that matches the installed version of Microsoft.EntityFrameworkCore and try again.

2)添加

//EF Core 
"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.1.0-preview4-final", 
    "type": "build" 
} 

3)现在,错误是:

No parameterless constructor was found on 'ApplicationDbContext'. Either add a parameterless constructor to 'Application DbContext' or add an implementation of 'IDbContextFactory' in the same assembly as 'ApplicationDbC ontext'.

我选择实现的接口。一种可能的方法:在运行dotnet ef migrations add Initial

4时),我添加了一个默认的构造函数用于ApplicationDbContext

现在,我可以添加迁移

public ApplicationDbContext Create(DbContextFactoryOptions options) 
{ 
    var builder = new DbContextOptionsBuilder<ApplicationDbContext>(); 
    builder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true"); 
    return new ApplicationDbContext(builder.Options); 
} 

发生同样的错误。

0

我有同样的问题。

多数民众赞成解决这对我

"tools": { 
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final" 
}, 
相关问题