2017-02-05 58 views
1

我有一個EF核心項目,我最近升級到1.1。一切工作正常......直到我試圖添加一個遷移。在命令行上執行dotnet ef現在會生成一個關於無法找到ef模塊/程序的錯誤。EF核心工具1.1.0-preview4-final不兼容Net46

深入研究這一點,我發現EF Core 1 - > 1.1過渡涉及到工具的變化。在project.json必須更換這種依賴性:

"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final", 

不幸的是...當我做到這一點的包更新失敗,出現錯誤信息,這個版本的工具的不支持net46。由於我正在使用某些庫,因此我必須運行它。

這裏是整個project.json文件:

"version": "1.0.0-*", 

    "dependencies": { 
    "ConnellDataCore": "1.0.0-*", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0", 
    "Microsoft.EntityFrameworkCore": "1.1.0", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0", 
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final", 
    "Microsoft.Extensions.Configuration": "1.1.0", 
    "Microsoft.Extensions.Configuration.Json": "1.1.0", 
    "Serilog": "2.3.0" 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "xmlDoc": false 
    }, 

    "frameworks": { 
    "net46": { 
     "frameworkAssemblies": { 
     "System.IO.Compression": "4.0.0.0" 
     } 
    } 
    }, 

    "tools": { 
    } 

我還要指出的是,該數據庫是在一個獨立的組裝定義的,所以我不得不用「創建一個虛擬的靜態程序:: Main()「技巧,以及」創建臨時上下文工廠「的訣竅。

我該如何回到我所在的位置,能夠將遷移添加到我的EF Core數據庫?

回答

1

這是一個已知的bug,截至2月上旬,2017年的解決方法是恢復到模具的早期版本(在project.json文件):

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final" 

注意,這才明白,組裝路徑更改爲Microsoft.EntityFrameworkCore。 Tools.DotNet from Microsoft.EntityFrameworkCore。 工具

最後,在我的特殊情況下,我錯誤地將引用包含在project.json文件的依賴項部分。他們真的屬於工具部分:

"tools": { 
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final" 
    }