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

Posted

技术标签:

【中文标题】将 DbContext 添加到现有的 .net 4 应用程序中【英文标题】:Adding DbContext into existing .net 4 application 【发布时间】:2013-06-30 10:58:16 【问题描述】:

我有基于对象上下文的现有 .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】:

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

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

【讨论】:

以上是关于将 DbContext 添加到现有的 .net 4 应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

将捆绑包添加到现有的 ASP.NET Webforms 解决方案

如何将 Web API 控制器添加到现有的 ASP.NET Core MVC?

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web 应用程序项目中?

将源代码添加到现有的 automake 程序

如何将 Angular 4 添加到现有的 node.js 应用程序

将角色属性添加到现有的 MVC 5 Web 应用程序