LINQ-to-Entities中是否有DataContext(不是Linq-to-SQL)?

Pho*_*bis 7 linq-to-entities

我最近问了一个关于跟踪Linq-to-Entities的问题

我认为其中一个答案是不正确的,因为它们指的是使用DataContext.LINQ到实体是否有DataContext?如果是这样,我怎么得到它?

小智 10

LINQ to Entities使用ObjectContext,而不是DataContext.

这是EF的简短描述:

LINQ to Entities,ObjectContext类和实体数据模型

LINQ to Entities查询使用对象服务基础结构.所述 的ObjectContext类是主要的类用于与EDM相互作用作为CLR对象.开发人员通过ObjectContext构造一个ObjectQuery实例.通用ObjectQuery类表示返回实例或类型化实体集合的查询.ObjectQuery返回的实体对象由Object Context跟踪,可以使用SaveChanges方法进行更新.

它甚至与LINQ to SQL中的DataContext的工作方式不同.虽然它们都管理连接并跟踪更改,但它们对数据结构和关系的建模方式不同.

不过,我会给出错误答案的海报,因为LINQ to SQL确实引用了"实体",不熟悉EF的人很可能仍然认为他们知道你在说什么.

例如:

LINQ to SQL和DataContext类

DataContext是通过数据库连接映射的所有实体.它跟踪您对所有检索到的实体所做的更改,并维护"身份缓存",以确保使用相同的对象实例表示检索多次的实体.

这可能令人困惑.


Amy*_*y B 5

显然,LinqToEntities使用ObjectContext而不是DataContext.

令人高兴的是,对象团队制作了一个DataContext,数据团队制作了一个ObjectContext(以及DataQuery vs ObjectQuery等)"Naming很难!"


使用EF4.1更新.net 4,在使用LinqToEntities时,您可能也对DbContext感兴趣.见.