1

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

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 添加到现有应用程序而不更改现有代码?

4

1 回答 1

0

您可以强制转换为对象上下文,但如果您 100% 坚持使用现有代码,那么您将从 DbContext 中一无所获。但我已经用 POCOs 而不是 EntityObjects 做到了这一点,并且无法确认它是否适用于 entityobjects。

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

于 2013-06-30T11:14:11.693 回答