20

来自MSDN

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

我虽然DbContext只处理与数据库的连接以及对数据库工作的线程数。

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

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

4

3 回答 3

21

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

要获得更好的信息,谁能比Julie Lerman更好地了解有关差异的更多信息,正如 EF 4.1 中所引入的那样。

于 2013-02-13T16:21:27.873 回答
6

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

于 2013-06-19T17:52:48.720 回答
0

对象上下文:

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

数据库上下文:

1.不支持编译查询 2.不支持实体自追踪 3.实体框架4.1及以上版本可用 4.静态和共享成员(公共)线程安全。5.最好是DB优先和模型优先方法和代码优先方法。

于 2019-06-21T03:24:59.593 回答