我最近问过question about tracing Linq-to-Entities
我认为one of the answers不正确,因为它们指的是使用DataContext。 LINQ到实体是否有DataContext?如果是这样,我该怎么做?
答案 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)。然而,这只是两种技术之间差异的一小部分。