将DbContext添加到现有的.net 4应用程序中

时间:2013-06-30 10:58:16

标签: entity-framework entity-framework-5

我已经存在基于对象上下文的.net 4应用程序。 现在我通过继承DbContext并调用构造函数方法将DbContext添加到现有应用程序中并传递现有的对象上下文。即。

public class DemoModelEntitiesDbContext : DbContext
    {
        public DemoModelEntitiesDbContext():base(new DemoModelEntities(), dbContextOwnsObjectContext:true)
        {
        }
        public DbSet<ELMAH_Error> ELMAH_Error { get; set; }
    }

比我打电话时,

using (DemoModelEntitiesDbContext context = new DemoModelEntitiesDbContext())
            {
                foreach (ELMAH_Error entity in context.ELMAH_Error.ToList())
                {
                    Console.WriteLine(entity.ID);
                }
}

我收到以下错误消息, “未映射类型'ObjectContextDemo.ELMAH_Error'。使用Ignore方法或NotMappedAttribute数据注释检查未明确排除类型。验证类型是否已定义为类,不是原始类,嵌套类或通用类,以及不会从EntityObject继承。“ 我检查了我现有的实体是否继承自EntityObject。 如何将DbContext添加到现有应用程序而不更改现有代码?

1 个答案:

答案 0 :(得分:0)

你可以转换为对象上下文,但如果100%坚持使用现有代码,你就不会从DbContext获得任何东西。但我已经用POCO做了这个,而不是EntityObjects,并且无法确认它是否适用于entityobjects。

否则,如果没有更改,就无法做到这一点。 DbContext不支持EntityObject。 DbContext是为POCO设计的。此外,DbContext和ObjectContext之间还存在其他代码差异。即使您已经在使用POCO,也必须进行更改。如果您使用EF设计器,则必须首先使用不同的代码生成模板(ef5 DbContext模板)。但这会导致您的应用中的EF调用产生非常不同的类别和大量更改。