EF6不支持上下文类型’System.Data.Entity.Core.Objects.ObjectContext’

我使用带有ADO.NET实体数据模型(EF6)的Visual Studio 2013创建了一个新项目。

现在我必须使用一些动态数据function(比如访问MetaTable对象),所以我添加了这段代码:

MetaModel model = new MetaModel(); model.RegisterContext(() => { return ((System.Data.Entity.Infrastructure.IObjectContextAdapter)new KiwiJuiceEntities()).ObjectContext; }, new ContextConfiguration() { ScaffoldAllTables = true }); 

但我有这个错误:

 Type of context 'System.Data.Entity.Core.Objects.ObjectContext' is not supported 

请注意,项目的参考已更新为EF6(system.data.entity.core)

已发布EF6的动态数据提供程序和EntityDataSource控件的新预览。 请检查一下,它对我有用。

http://blogs.msdn.com/b/webdev/archive/2014/01/30/announcing-preview-of-dynamic-data-provider-and-entitydatasource-control-for-entity-framework-6.aspx#

要注册提供者:

 MetaModel model = new MetaModel(); model.RegisterContext( new Microsoft.AspNet.DynamicData.ModelProviders.EFDataModelProvider( () => new KiwiJuiceEntities() ), new ContextConfiguration() { ScaffoldAllTables = true } ); 

DynamicData不支持EntityFramework 6,因此降级到EF 5’解决’问题。

是。

EF 6没有System.Data.Objects.ObjectContext 。 EF 6已将某些类型(包括ObjectContext )从System.Data.Entity.dllEntityFramework.dll ,并更改了其名称空间。 您收到此错误的事实表明您没有尝试重新编译您的应用程序,您只需替换EntityFramework.dll并希望最好。 那不行。 您需要更新代码才能使用EF 6:您需要删除对System.Data.Entity.dll的引用,并更新代码以引用新类型。

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

参考文献: