我最近问了一个关于跟踪Linq-to-Entities的问题
我认为其中一个答案是不正确的,因为它们指的是使用DataContext.LINQ到实体是否有DataContext?如果是这样,我怎么得到它?
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是通过数据库连接映射的所有实体的源.它跟踪您对所有检索到的实体所做的更改,并维护"身份缓存",以确保使用相同的对象实例表示检索多次的实体.
这可能令人困惑.
显然,LinqToEntities使用ObjectContext而不是DataContext.
令人高兴的是,对象团队制作了一个DataContext,数据团队制作了一个ObjectContext(以及DataQuery vs ObjectQuery等)"Naming很难!"
使用EF4.1更新.net 4,在使用LinqToEntities时,您可能也对DbContext感兴趣.见也.