来自MSDN
:
表示工作单元和存储库模式的组合,使您可以查询数据库并将更改组合在一起,然后将更改作为一个单元写回到存储中。
DbContext
在概念上与ObjectContext
类似。
我虽然DbContext
只处理与DB的连接以及针对DB工作的线程数。
现在我明白它包含跟踪机制?我以为这是在ObjectContext
。
那么(用简单的英语)它们之间的区别是什么?
答案 0 :(得分:20)
DbContext是ObjectContext类的轻量级版本,它几乎位于ObjectContext之上(甚至还有一种方法可以从DbContext获取ObjectContext)。它也更容易使用,IMO,并使CRUD操作成为一种习惯。
为了获得更好的信息,有关差异的更多信息的人比Julie Lerman更好看,如EF 4.1中所示。
答案 1 :(得分:5)
DbContext是一个较小的API,暴露了最常用的 ObjectContext的功能。在某些情况下,这些功能在DbContext中进行镜像 API。在其他情况下,实体框架团队简化了更复杂的编码 通过向我们提供像Find或DbSet.Local这样的属性的方法。但是有 潜伏在你下面的一个大API你可能仍然需要访问。例如,你可能 希望直接使用MetadataWorkspace来编写针对类的通用代码 因为该API可以比反射更有效地读取模型。另外, MetadataWorkspace能够提供有关元数据的更多信息 可以发现反射,例如,关键属性。或者你可能想要 利用通过Entity SQL公开的特定于数据库的功能, 您无法从LINQ访问实体。 或者您可能已经有了申请 使用ObjectContext编写,并且您希望在将来的更新中利用DbContext 而不替换所有的ObjectContext代码。(编程DbContext参考)
答案 2 :(得分:0)
1。支持编译查询 2.支持实体的自我追踪 3.适用于实体框架4.0及以下版本 4.它不是线程安全的。 5.最适合数据库优先和模型优先的方法。
1。不支持编译查询 2.它不支持实体的自我跟踪 3.适用于实体框架4.1及更高版本 4.对于静态和共享成员(公共)是线程安全的。 5,最好是数据库优先,模型优先和代码优先。