2017-02-17 172 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