EF 6 System.Data.Objects.ObjectContext错误(EF 6 Syst

2019-07-17 17:19发布

近日笔者从实体框架5升级到实体框架6阿尔法2,我收到以下错误:

未找到方法: 'System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()'。

当我打电话这是击中

if (Membership.ValidateUser(model.UserName, model.Password)) {}

这用它为什么雨后春笋这个错误之前不知道做工精细。 有什么建议?

Answer 1:

EF 6没有System.Data.Objects.ObjectContext 。 EF 6已经移动了一些类型,包括ObjectContext ,从System.Data.Entity.dllEntityFramework.dll ,并改变了他们的命名空间。 你得到这个错误的事实表明你还没有尝试重新编译应用程序,你只需更换EntityFramework.dll和最好的希望。 这是行不通的。 你需要更新你的代码EF 6的工作:你需要删除引用System.Data.Entity.dll ,并更新你的代码来引用新类型。

这也许会是可能的参考IObjectContextAdapter.ObjectContext特性,在你使用某些库,但它很可能会在你自己的代码。 错误信息(在部分你没有在你的问题包括)应该告诉你,它是从哪里过来。



Answer 2:

对我来说,更新下面这些工作:
using System.Data.Objects; --> using System.Data.Entity.Core.Objects;

using System.Data.Objects.DataClasses; --> using System.Data.Entity.Core.Objects.DataClasses;



Answer 3:

我还使用EF 6

我设法解决这个问题卸载包Microsoft.AspNet.Providers.Core诉1.2。 我使用的是1.1版来代替。 如果你和我一样,是使用LocaDb ,你必须卸载LocaDb ,因为它取决于封装包。 当然,你必须重新安装LocaDb ...

您可以使用NuGet包管理器控制台在Visual Studio中抢1.1版:

Install-Package Microsoft.AspNet.Providers.Core -Version 1.1

有一个Microsoft连接错误有关此问题的填充:

Microsoft.AspNet.Providers.Core与EF6不兼容



Answer 4:

新的2.0版本的提供者(的http://www.nuget.org/packages/Microsoft.AspNet.Providers.Core/ )是EF6兼容(他们实际上将只与EF6工作)。



Answer 5:

我设法通过删除我已通过的NuGet安装ASPNET供应商,这是标示为淘汰解决这个问题。 这样做也卸载实体框架。

然后我安装了新的ASPNET通用供应商,其次是实体框架6,和我所有的问题都解决。



Answer 6:

检查此链接

http://visualstudiomagazine.com/articles/2014/03/01/whats-new-in-entity-framework-6.aspx

我更新了EF 6.2,并得到同样的错误,并找到解决方案,休耕

命名空间System.Data.Entity的更改为System.Data.Entity.Core,包括System.Data任何引用。*命名空间(例如,System.Data.Objects变得System.Data.Entity.Core.Objects)。



Answer 7:

当这种情况发生的实体框架是无法找到安装在机器的框架DOTNET库中的方法。 所以,安装DOTNET框架4.5.2或更高版本。 这将解决这个问题。



Answer 8:

什么工作对我来说是以下几点:

  1. 安装与DLL“Microsoft.AspNet.DataSource”:

    PM>安装,包装Microsoft.AspNet.EntityDataSource

  2. 参考“Microsoft.AspNet.DataSource.dll”在您的项目。

  3. 增加了使用声明如下:

    使用System.Data.Entity.Core.Metadata.Edm;

    使用System.Data.Entity.Core.Objects;

    使用Microsoft.AspNet.EntityDataSource;

  4. 删除了使用声明如下:

    使用System.Data.Entity的;

    使用System.Data.Metadata.Edm;

    使用System.Data.Objects;

    使用System.Web.UI.WebControls;

瞧,代码编译和工作。



Answer 9:

它有EDMX文件此相关的是旧版本:

  • 重新安装EF用的NuGet
  • 删除.edmx文件,并与表重新创建


Answer 10:

一个快速和简单的解决方法对我来说是删除有问题的组件(不建议使用),并添加到新库的引用。 该代码是在Context.tt内修改,如下所示:

if (container.FunctionImports.Any())
{
#>
using System.Data.Entity.Core.Objects; // The assembly you need
using System.Linq;
<#
}

它已经出现了这样的任何修改前:

if (container.FunctionImports.Any())
{
#>
using System.Data.Objects; // Error on compile
using System.Data.Objects.DataClasses; // Error on compile
using System.Linq;
<#


文章来源: EF 6 System.Data.Objects.ObjectContext Error