编辑:
我遇到了问题,因为Package Manager抱怨“安装了Entity Framework 6.x和Entity Framework Core命令”。但我认为它不是来自EntityFrameworkCore NuGet包。我有一个使用DbContext的网站项目。它从Microsoft.AspNetCore.App包(它加载的ONLY NuGet包)获取它,并且网站项目仅使用安装的EF Core命令。我尝试在我的库项目中使用该包,但我仍然遇到同样的问题。所以我的问题显然不是来自NuGet包。
显然有更多的调查......
原始问题:
我正在将库代码从.NET 4.6.2迁移到.NET Core 2.1。此代码引用了DbContext
(在System.Data.Entity
中)。为了引入等效的.NET Core DbContext
(在Microsoft.EntityFrameworkCore
中),我可以加载Microsoft.EntityFrameworkCore.SqlServer
NuGet包。问题是该软件包除了EF Core之外还显然引入了EF6,因此当我尝试在软件包管理器控制台中发出update-database
命令时,它会抱怨“已安装”实体框架核心和实体框架6“
据推测,我可以找出一个解决这个烦恼的Package Manager命令,但我对EF 6没有(显而易见的)需求,我很快就会想出如何引入DbContext
而不引入EF 6。
有什么建议吗?
答案 0 :(得分:0)
此代码引用
DbContext
(System.Data.Entity
)
这似乎是你的问题。扔掉它。
正确的DbContext
位于Microsoft.EntityFrameworkCore
命名空间中,来自同一个nuget包。
您可能应该阅读this:
确保已卸载旧的nuget包。
答案 1 :(得分:0)
我明白了。我查看了csproj文件,并且有一条无关紧要的行,显然是早先摆弄了NuGet包:
<PackageReference
Include="Microsoft.VisualStudio.Web.CodeGeneration.Design"
Version="2.1.0" PrivateAssets="All" />
由于这个库没有理由处理Web代码生成,我从csproj文件中删除了该行,现在关于加载EF 6工具的消息已经神奇地消失了。去图......