2016-07-26 51 views
0

我下面這裏列出的教程:「Microsoft.EntityFrameworkCore.Tools」不是安裝在項目上腳手架的DbContext

https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

然而,而不是包括在WebApplication的項目中的DB背景下,我希望DB Context,Entities等能夠在另一個.NET Core Class Library中生存。

通過更新庫project.json文件以包含'netcoreapp1.0'框架,我解決了一些早期的兼容性問題。

project.json

BEFORE:

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
     "NETStandard.Library": "1.6.0" 
    }, 

    "frameworks": { 
     "netstandard1.6": { 
      "imports": "dnxcore50" 
     } 
    } 
} 

AFTER:

{ 
    "version": "1.0.0-*", 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ "portable-net451+win8" ], 
     "buildOptions": { 
     "emitEntryPoint": true 
     }, 

     "dependencies": { 
     "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
     "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0", 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0-*" 
     }, 
     "Microsoft.EntityFrameworkCore": "1.0.0-*", 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*" 
     }, 
     "tools": { 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*" 
     } 
    }, 
    "netstandard1.6": { 
     "imports": "dnxcore50", 
     "dependencies": { 
     "NETStandard.Library": "1.6.0" 
     } 
    } 
    } 
} 

本教程繼續說,爲了 '逆向工程模型' 下面的命令必須在包管理器控制檯中運行:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models 

我收到以下錯誤信息:

Cannot execute this command because 'Microsoft.EntityFrameworkCore.Tools' is not installed in project 'src\DB'. Add 'Microsoft.EntityFrameworkCore.Tools' to the 'tools' section in project.json. See http://go.microsoft.com/fwlink/?LinkId=798221 for more details. 

其中db是類庫的名稱。

您可以在工具部分清楚地看到Microsoft.EntityFrameworkCore.Tools。所以我不知道如何繼續。

+0

你的項目的JSON似乎無效。框架中的模式中沒有工具部分。只有在頂層 – Tseng

回答

1

project.json schema中定義的「框架」部分中沒有工具部分。

這應該正常工作

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0", 
    "Microsoft.EntityFrameworkCore": "1.0.0-*", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*" 
    }, 
    "tools": { 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ "portable-net451+win8" ], 
     "buildOptions": { 
     "emitEntryPoint": true 
     }, 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0-*" 
     } 
     } 
    }, 
    "netstandard1.6": { 
     "imports": "dnxcore50", 
     "dependencies": { 
     "NETStandard.Library": "1.6.0" 
     } 
    } 
    } 
} 
+0

因此,我得到的下一個錯誤消息是告訴我將類庫設置爲「啓動」項目。這樣做後,Scaffold-DbContext命令失敗,因爲「程序不包含適用於入口點的靜態'Main'方法」 – Robodude

+0

因此,我採用了下一個邏輯步驟並添加了一個主要方法。我收到以下消息:Entity Framework工具的此預覽不支持ASP.NET Core和.NET Core應用程序中類庫項目的命令。有關詳細信息和解決方法,請參閱http://go.microsoft.com/fwlink/?LinkId=798221。 – Robodude

+0

也許是因爲它看到你的netstandard1.6節仍然存在 – Tseng