摘自:http://msdn.microsoft.com/zh-cn/library/bb386871.aspx
对象服务是 实体框架 的一个组件,您可使用它来查询、插入、更新和删除数据,它表示为作为实体类型实例的强类型 CLR 对象。对象服务支持针对 实体数据模型 (EDM) 中定义的类型进行的语言集成查询 (LINQ) 和 Entity SQL 查询。对象服务将返回的数据具体化为对象,并将对象更改传播回数据源。它还提供了跟踪更改、将对象绑定到控件以及处理并发问题的功能。对象服务由 System.Data.Objects 和 System.Data.Objects.DataClasses 命名空间中的类来实现。
对象上下文
ObjectContext 类是以对象(这些对象是 EDM 中定义的实体类型的实例)的形式与数据进行交互的主要类。ObjectContext 类的实例封装以下内容:
-
到数据库的连接,以 EntityConnection 对象的形式封装。
-
描述模型的元数据,以 MetadataWorkspace 对象的形式封装。
-
在创建、更新和删除操作过程中跟踪对象的 ObjectStateManager 对象。
实体框架 工具使用概念架构定义语言 (CSDL) 文件并生成对象层代码。此代码用于以对象形式使用实体数据以及利用对象服务功能。所生成的代码包括以下数据类:
-
类型化 ObjectContext 类。此类表示模型的 EntityContainer,它派生自 ObjectContext。
-
表示实体类型并从 EntityObject 继承的类。
-
表示复杂类型并从 ComplexObject 继承的类。
![]() |
---|
ObjectContext 类不是线程安全的。在多线程方案中无法确保 ObjectContext 中的数据对象的完整性。 |
使用对象服务
对象服务支持对 实体框架 进行编程的以下行为:
以对象形式查询数据
通过对象服务,您可以使用 LINQ、Entity SQL 或查询生成器方法针对 实体数据模型 来执行查询并以对象的形式返回数据。有关更多信息,请参见对象查询(实体框架)。
形成查询结果
默认情况下,对象服务只返回查询中专门请求的对象。当对象之间存在关系时,可以指定查询是否返回相关对象。还可以在后续请求中加载相关对象。有关更多信息,请参见形成查询结果(实体框架)。
使用生成器方法编写查询
对象服务在 ObjectQuery 上提供方法,用于构造与 Entity SQL 和 LINQ to Entities 查询等效的查询。有关更多信息,请参见查询生成器方法(实体框架)。
添加、更改和删除对象
对象服务将数据对象保存在内存中,您可以在对象上下文中添加、修改和删除对象。对对象所做的更改是由对象上下文跟踪的。有关更多信息,请参见添加、修改和删除对象(实体框架)。
将更改保存到数据源
对象服务在对象上下文中缓存对对象的更改。当显式请求时,对象服务将这些更改保存回数据源。有关更多信息,请参见保存更改和管理并发(实体框架)。
将对象绑定到控件
对象服务可以将对象绑定到支持数据绑定的控件,例如 DataGridView 控件。有关更多信息,请参见将对象绑定到控件(实体框架)。
附加对象
使用对象服务能够将现有对象直接附加到对象上下文。这使您能够附加存储在 ASP.NET 应用程序的视图状态中的对象或从远程方法调用或 Web 服务返回的对象。有关更多信息,请参见附加对象(实体框架)。
分离对象
对象上下文实例可能需要保存应用程序执行的一段时间,例如当对象绑定到 Windows 窗体控件时。使用对象服务,可以通过在不再需要对象时分离对象以释放资源来管理对象上下文的大小。有关更多信息,请参见分离对象(实体框架)。
序列化对象
对象服务支持对对象进行 Windows Communication Foundation (WCF) 数据约定序列化、二进制序列化和 XML 序列化。数据约定序列化在 Web 服务方案中很有用。在 ASP.NET 应用程序中使用视图状态保存对象时,二进制序列化尤其有用。有关更多信息,请参见序列化对象(实体框架)。
管理对象标识和跟踪更改
对象服务使用标识值来跟踪对对象的更改、处理冲突以及确定何时从数据源检索数据。有关更多信息,请参见管理对象上下文(实体框架)。
管理并发
当一个或多个属性 (Property) 的 ConcurrencyMode 属性 (Attribute) 设置为“fixed”时,对象服务能够跟踪并发。在这种情况下,当检测到并发冲突时,对象服务将引发特定的异常。有关更多信息,请参见保存更改和管理并发(实体框架)。
管理连接
使用对象服务可以显式管理对象上下文使用的连接,以及为对象上下文提供您自己的连接。有关更多信息,请参见管理对象服务中的连接(实体框架)。
管理事务
对象服务支持 .NET Framework 事务,以协调对数据源执行的操作,并参与分布式事务处理。有关更多信息,请参见在对象服务中管理事务(实体框架)。
通过实体数据模型使用自定义对象
使用对象服务,您可以通过 实体数据模型 手动定义您自己的对象或使用现有对象。有关更多信息,请参见自定义对象(实体框架)。