如何在没有引入EF 6的情况下在EF Core中获取DbContext类?

时间:2018-06-11 03:09:30

标签: c# .net-core entity-framework-core

编辑:

我遇到了问题,因为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。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  

此代码引用DbContextSystem.Data.Entity

这似乎是你的问题。扔掉它。

正确的DbContext位于Microsoft.EntityFrameworkCore命名空间中,来自同一个nuget包。

您可能应该阅读this

确保已卸载旧的nuget包。

Nuget

答案 1 :(得分:0)

我明白了。我查看了csproj文件,并且有一条无关紧要的行,显然是早先摆弄了NuGet包:

<PackageReference
    Include="Microsoft.VisualStudio.Web.CodeGeneration.Design"
    Version="2.1.0" PrivateAssets="All" />

由于这个库没有理由处理Web代码生成,我从csproj文件中删除了该行,现在关于加载EF 6工具的消息已经神奇地消失了。去图......