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

最后都变了- 提交于 2020-02-01 04:22:44

问题


I have a new project created using Visual Studio 2013 with an ADO.NET Entity Data Model (EF6).

Now I have to use some Dynamic Data function (like access to MetaTable object), so I add this code:

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

but I've got this error:

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

Note that the project have the reference updated to EF6 (system.data.entity.core)


回答1:


A new preview of Dynamic Data Provider and EntityDataSource control for EF6 has been released. Please check this out, it worked for me.

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

To register the provider:

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



回答2:


DynamicData do no support EntityFramework 6 yet so downgrading to EF 5 'solve' the problem.




回答3:


Yes.

EF 6 does not have System.Data.Objects.ObjectContext. EF 6 has moved some types, including ObjectContext, from System.Data.Entity.dll into EntityFramework.dll, and changed their namespaces. The fact that you get this error suggests you haven't attempted to recompile your application, you've simply replaced EntityFramework.dll and hoped for the best. That won't work. You need to update your code to work with EF 6: you need to remove your references to System.Data.Entity.dll, and update your code to refer to the new types.

It just might be possible for the reference to the IObjectContextAdapter.ObjectContext property to be in some library you're using, but most likely it'll be in your own code. The error message (in the part you didn't include in your question) should tell you where it is coming from.

References:

  • EF 6 System.Data.Objects.ObjectContext Error
  • http://msdn.microsoft.com/en-US/data/dn469466
  • http://support.microsoft.com/kb/2816241


来源:https://stackoverflow.com/questions/20523089/ef6-type-of-context-system-data-entity-core-objects-objectcontext-is-not-suppo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!