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

时间:2013-12-11 15:27:39

标签: c# asp.net entity-framework objectcontext

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

现在我必须使用一些动态数据功能(比如访问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)

3 个答案:

答案 0 :(得分:8)

已发布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 }
);     

答案 1 :(得分:4)

DynamicData不支持实体框架6,因此降级到EF 5'解决'问题。

答案 2 :(得分:3)

  

EF 6没有System.Data.Objects.ObjectContext。 EF 6已经搬走了   某些类型,包括来自ObjectContext的{​​{1}}   进入System.Data.Entity.dll,并更改其名称空间。事实   您收到此错误表明您没有尝试重新编译   您的应用程序,您只需替换EntityFramework.dll和   希望是最好的。那不行。您需要将代码更新为   使用EF 6:您需要删除您的引用   EntityFramework.dll,并更新您的代码以引用新代码   类型。

     

可能有可能参考   System.Data.Entity.dll属性在某个库中   你正在使用,但很可能它将在你自己的代码中。错误   消息(在您未在问题中包含的部分)应该告诉我们   你来自哪里。

参考文献: