Asp.net 为什么实体框架在使用ADO.NET实体数据模型映射数据库表时会自动使用ObjectContext而不是DbContext
我首先遵循数据库方法;我在SQL Server 2008数据库中创建了这些表,然后使用ADO.NET实体数据模型将这些表映射到实体框架类。但是当我打开designer.cs文件时,我在自动创建的类定义中发现了以下代码:Asp.net 为什么实体框架在使用ADO.NET实体数据模型映射数据库表时会自动使用ObjectContext而不是DbContext,asp.net,asp.net-mvc-3,entity-framework,dbcontext,objectcontext,Asp.net,Asp.net Mvc 3,Entity Framework,Dbcontext,Objectcontext,我首先遵循数据库方法;我在SQL Server 2008数据库中创建了这些表,然后使用ADO.NET实体数据模型将这些表映射到实体框架类。但是当我打开designer.cs文件时,我在自动创建的类定义中发现了以下代码: public partial class PortalEntities : ObjectContext 因此,我有以下三个问题让我感到困惑: 为什么我的PortalEntities类是从ObjectContext派生的,而不是像我预期的那样从DbContext派生的 Objec
public partial class PortalEntities : ObjectContext
因此,我有以下三个问题让我感到困惑:
PortalEntities
类是从ObjectContext
派生的,而不是像我预期的那样从DbContext
派生的ObjectContext
和DbContext
之间是否存在重大差异,或者它们主要是相同的,并且提供相同的功能Student student = db.Students.Find(id);
DbContext
那样使用.Find()
方法,那么这是否意味着ObjectContext
和DbContext
有不同的方法可以使用
BRDbContext是
ObjectContext
的包装器,它简化了我们最常做的事情的接口
如果您有DbContext
,您仍然可以通过((IObjectContextAdapter)DbContext)访问ObjectContext
代码>
如果要在首次使用数据库时使用DbContext
而不是ObjectContext
,可以切换用于生成代码的模板。您可以通过右键单击EDMX并选择“添加代码生成项”来完成此操作。然后可以选择DbContext模板
从VS2012开始,默认代码生成从ObjectContext
更改为DbContext
,谢谢您的回复;但是,首先在数据库apprach中使用DbContext而不是ObjectContext会对我有好处吗?DbContext有一个简化的接口。它将更易于使用,如果需要,您可以始终将其强制转换为ObjectContext。此外,出于单元测试的目的,DbContext更易于模拟。