我最近问了一个关于跟踪 Linq-to-Entities的问题
我认为其中一个答案是不正确的,因为它们指的是使用 DataContext。是否有 LINQ-to-Entities 的 DataContext?如果是这样,我该如何得到它?
我最近问了一个关于跟踪 Linq-to-Entities的问题
我认为其中一个答案是不正确的,因为它们指的是使用 DataContext。是否有 LINQ-to-Entities 的 DataContext?如果是这样,我该如何得到它?
LINQ to Entities 使用 ObjectContext,而不是 DataContext。
以下是对 EF 的简短描述:
LINQ to Entities、ObjectContext 类和实体数据模型
LINQ to Entities 查询使用对象服务基础结构。ObjectContext类是作为 CLR 对象与 EDM 交互的 主要类。开发者通过 ObjectContext 构造一个 ObjectQuery 实例。通用 ObjectQuery 类表示返回类型实体的实例或集合的查询。ObjectQuery 返回的实体对象由对象上下文跟踪,并且可以使用 SaveChanges 方法进行更新。
它甚至与 LINQ to SQL 中的 DataContext 的工作方式不同。虽然它们确实都管理连接和跟踪更改,但它们在数据结构和关系的建模方式上有所不同。
不过,我会给那个错误答案的发布者一些松懈,因为 LINQ to SQL 确实引用了“实体”,不熟悉 EF 的人很可能仍然认为他们知道你在说什么。
例如:
DataContext 是通过数据库连接映射的所有实体的源。它跟踪您对所有检索到的实体所做的更改,并维护一个“身份缓存”,以保证多次检索到的实体使用相同的对象实例来表示。
这可能会令人困惑。
显然,LinqToEntities 使用ObjectContext而不是 DataContext。
有趣的是,对象团队制作了一个 DataContext,而数据团队制作了一个 ObjectContext(以及 DataQuery 与 ObjectQuery 等)。“命名很难!”
更新,对于带有 EF4.1 的 .net 4,在使用LinqToEntities时,您可能还对DbContext感兴趣。另请参阅。
我想您可能指的是 ADO.NET 实体数据模型(.edmx 文件 - 与 .dbml 文件相当)。
在 VS 中可以在Add Item->ADO.NET Entity Data Model中看到
这些任意的语法差异有很多。例如 SubmitChanges (L2S) 和 SaveChanges (L2E)。但是,这只是两种技术之间差异的一小部分。