2016-12-02 112 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" 
}, 
相關問題