2017-02-17 171 views
1

我正在使用使用project.json文件的dotnet核心版本創建的項目。我能夠使用VS Code中的dotnet ef cli命令添加數據庫遷移並創建數據庫(添加遷移,更新等)。遷移後無法將遷移添加到數據庫.net核心

但是,我最近使用dotnet migrate命令遷移了項目,所以現在我的項目有一個.csproj文件。我需要添加更多的數據庫遷移,但是當我運行cli命令時,出現錯誤,指出無法找到project.json文件。

我已經在線查看文檔(並搜索了網頁),但我找不到任何可以告訴我可能錯過的內容。 FWIW,這裏是我的.csproj文件中可能相關的包:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.0" /> 

    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.1.0-preview4-final" /> 

回答

3

工具的新版本發佈了新的.csproj做事的方式。您需要將Microsoft.EntityFrameworkCore.Tools.DotNet的版本從1.1.0-preview4-final更改爲1.0.0-msbuild3-final

您可以在Nuget上看到不同的最新版本here

+0

當我更改依賴項並進行恢復時,出現此警告:指定的依賴項是Microsoft.EntityFrameworkCore.Tools.DotNet(> = 1.1.0-msbuild3-final),但以Microsoft.EntityFrameworkCore.Tools.DotNet 1.1結束。 0-preview4決賽。哦,我發現[Julie Lerman的博客](https://www.goodreads.com/author/show/1892325.Julia_Lerman/blog),她提到了你所做的同樣的事情。 –

+0

版本實際上是'1.0.0-msbuild3-final',而不是'1.1.0-msbuild3-final'。更新,你應該很好去 - 我錯誤地張貼在一開始,現在更新= D。 – steamrolla

1

如果您不需要「DOTNET EF」工具具體情況,你也可以使用VS PowerShell集成版本(如果你需要的DOTNET EF工具也許下面steamrolla的帖子可以幫助你):

我用下面的包的引用:

<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0-preview4-final" /> 

有了這些引用設置,可以使用EF-工具(添加遷移,更新,數據庫,...)從軟件包管理器控制檯。

+0

'DotNetCliToolReference'對我來說似乎很好。 – steamrolla

+1

Microsoft.EntityFrameworkCore.Tools.DotNet和Microsoft.EntityFrameworkCore.Tools似乎有區別。 DotNet版本用於「dotnet ef」命令,而沒有Dotnet的則用於正常的VS集成。請參閱:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ – Fionn

+0

正確。如果您向下滾動查看「升級工具包」,他們會將其發出並說出您是否使用'dotnet ef'命令,則需要使用'.DotNet'版本。 所有的說法,在這個問題上實際上還有另外一件事:新的'.csproj'做事的方式。 – steamrolla