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

时间:2008-09-27 02:11:48

标签: linq-to-entities

我最近问过question about tracing Linq-to-Entities

我认为one of the answers不正确,因为它们指的是使用DataContext。 LINQ到实体是否有DataContext?如果是这样,我该怎么做?

4 个答案:

答案 0 :(得分:10)

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

以下是EF的简短描述:

  

LINQ to Entities, the ObjectContext Class, and the Entity Data Model

     

LINQ to Entities查询使用对象服务基础架构。该    ObjectContext 类是与EDM交互的主要类   CLR对象。开发人员通过构造一个ObjectQuery实例   ObjectContext的。通用ObjectQuery类表示返回的查询   实例或类型实体的集合。返回的实体对象   ObjectQuery由Object Context跟踪,可以使用更新   SaveChanges方法。

它甚至与LINQ to SQL中的DataContext的工作方式不同。 虽然他们确实管理连接并跟踪变化,但他们对数据结构和关系的建模方式不同。

我会给出错误答案的海报,但是,因为LINQ to SQL确实引用了“实体”,不熟悉EF的人很可能仍然认为他们知道你在说什么。 / p>

例如:

  

LINQ to SQL and the DataContext Class

     

DataContext是映射到数据库的所有实体源   连接。 跟踪您对所有检索到的实体所做的更改   维护一个“身份缓存”,保证检索实体   使用相同的对象实例表示不止一次。

这可能令人困惑。

答案 1 :(得分:5)

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

对象团队创建了一个DataContext并且数据团队创建了一个ObjectContext(以及DataQuery vs ObjectQuery等),这很有趣。“Naming很难!”


更新,对于.net 4与EF4.1,您在使用LinqToEntities时可能也对DbContext感兴趣。请参阅also

答案 2 :(得分:1)

我认为您可能指的是ADO.NET实体数据模型(.edmx文件 - 与.dbml文件相当)。

在VS中可以看到添加项目 - > ADO.NET实体数据模型

答案 3 :(得分:0)

这些仲裁语法差异存在很多。例如。 SubmitChanges(L2S)和SaveChanges(L2E)。然而,这只是两种技术之间差异的一小部分。