C# 什么';DbContext和ObjectContext之间的区别是什么

C# 什么';DbContext和ObjectContext之间的区别是什么,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,从MSDN: 表示工作单元和存储库模式的组合,使您能够查询数据库并将更改分组,然后将这些更改作为一个单元写回存储DbContext在概念上类似于ObjectContext 我认为DbContext只处理到数据库的连接和针对数据库工作的线程数 现在我知道它包含跟踪机制了吗?我以为这是在ObjectContext中 那么(通俗地说)它们之间的区别是什么呢?DbContext是ObjectContext类的一个轻量级版本,它几乎位于ObjectContext之上(甚至有一种方法可以仅从DbContex

MSDN

表示工作单元和存储库模式的组合,使您能够查询数据库并将更改分组,然后将这些更改作为一个单元写回存储
DbContext
在概念上类似于
ObjectContext

我认为DbContext只处理到数据库的连接和针对数据库工作的线程数

现在我知道它包含跟踪机制了吗?我以为这是在
ObjectContext


那么(通俗地说)它们之间的区别是什么呢?

DbContext是ObjectContext类的一个轻量级版本,它几乎位于ObjectContext之上(甚至有一种方法可以仅从DbContext访问ObjectContext)。在国际海事组织,它也更容易使用,并且使积垢操作变得简单


为了获得更好的信息,最好找谁,而不是像EF 4.1中介绍的那样,寻找关于差异的更多信息。

DbContext是一个较小的API,它公开了最常用的 ObjectContext的特性。在某些情况下,这些功能会在DbContext中镜像 应用程序编程接口。在其他情况下,实体框架团队简化了更复杂的编码 通过向我们提供Find之类的方法或DbSet.Local之类的属性。但是有 隐藏在下面的一个大API,您可能仍然需要访问它。例如,您可以 想要直接使用MetadataWorkspace来编写针对类的通用代码吗 因为该API可以比反射更有效地读取模型。此外 MetadataWorkspace能够提供比您更多的元数据信息 例如,可以通过反射发现关键属性。或者你可能想 利用通过实体SQL公开的特定于数据库的函数, 您无法从LINQ访问实体。 或者您可能已经有了一个应用程序 使用ObjectContext编写,您希望在将来的更新中利用DbContext 不替换所有ObjectContext代码。(参考编程DbContext)

对象上下文: 1.支持编译查询 2.支持实体的自跟踪 3.可用于实体框架4.0及以下版本 4.它不是线程安全的。 5.最好采用DB优先和模型优先的方法

数据库上下文: 1.不支持编译查询 2.不支持实体的自跟踪 3.实体框架4.1及以上版本可用 4.对于静态和共享成员(公共),它是线程安全的。 5.最好是DB优先、模型优先和代码优先的方法。

查看此项了解更多信息