EF 6 System.Data.Objects.ObjectContext错误

Joe*_*Joe 34 c# asp.net-mvc asp.net-mvc-4 entity-framework-6 azure-sql-database

我最近从实体框架5升级到实体框架6 Alpha 2,我收到以下错误:

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

我打电话时会受到打击

if (Membership.ValidateUser(model.UserName, model.Password)) {}
Run Code Online (Sandbox Code Playgroud)

这曾经工作得很好,但不确定为什么会出现这个错误.有什么建议?

小智 31

EF 6没有System.Data.Objects.ObjectContext.EF 6已经移动了一些类型,包括ObjectContext,System.Data.Entity.dll进入EntityFramework.dll和更改了它们的命名空间.您收到此错误的事实表明您没有尝试重新编译您的应用程序,您只需更换EntityFramework.dll并希望获得最佳效果.那不行.您需要更新代码才能使用EF 6:您需要删除对引用的引用System.Data.Entity.dll,并更新代码以引用新类型.

对于IObjectContextAdapter.ObjectContext属性的引用可能在您正在使用的某个库中,但很可能它将在您自己的代码中.错误消息(在您未在问题中包含的部分)应该告诉您它的来源.

  • "源代码来自System.Web.Providers" - **可能是一个非常相关的位.如果你从[Microsoft.AspNet.Providers.Core](https://nuget.org/packages/Microsoft.AspNet.Providers.Core)(间接)获得它,这取决于EF5 +,并且使用EF5中的方法在EF6中不再以相同的形式存在,除非您可以找到或创建不使用这些EF5方法的其他版本,否则不能将其与EF6一起使用. (3认同)

pir*_*ris 21

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

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


Len*_*rri 14

我也在用EF 6.

我设法解决了卸载软件包Microsoft.AspNet.Providers.Corev.1.2 的问题.我正在使用1.1版.如果您像我一样正在使用LocaDb,则必须卸载该LocaDb软件包,因为它取决于该软件包.当然你需要重新安装LocaDb ......

您可以使用Visual Studio中的NuGet包管理器控制台获取v.1.1:

Install-Package Microsoft.AspNet.Providers.Core -Version 1.1
Run Code Online (Sandbox Code Playgroud)

有关此问题的Microsoft Connect错误已填写:

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


Fab*_*ier 5

新的2.0版本的提供程序(http://www.nuget.org/packages/Microsoft.AspNet.Providers.Core/)与EF6兼容(它们实际上只适用于EF6).