DbContext和ObjectContext之间有什么区别

来自MSDN

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

我虽然DbContext只处理与DB的连接和对DB工作的线程数。

现在我明白它包含跟踪机制? 我以为这是在ObjectContext

那么(用简单的英语)它们之间的区别是什么?

DbContext是ObjectContext类的轻量级版本,它几乎位于ObjectContext之上(甚至还有一种方法可以从DbContext获取ObjectContext)。 它也更容易使用,IMO,并使CRUD操作成为一个难题。

为了获得更好的信息,谁能比Julie Lerman更好地了解差异的更多信息,如EF 4.1所示。

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