批处理操作(WCF 数据服务)
开放式数据协议 (OData) 支持对针对基于 OData 的服务的请求进行批处理。 有关详细信息,请参阅 OData:批量处理。在 WCF 数据服务 中,每个使用 DataServiceContext 的操作(如执行查询或保存更改)都会导致向数据服务发送一个单独的请求。 为保持操作集的合理范围,可以显式定义操作批。 这样可确保通过一个 HTTP 请求将该批中的所有操作发送到数据服务,使服务器能够以原子方式处理这些操作,并减少与数据服务之间的往返次数。
查询操作批处理
若要在一个批中执行多个查询,必须在该批中将每个查询创建为 DataServiceRequest<TElement> 类的一个单独实例。 以这种方式创建查询请求时,查询本身将定义为 URI,并遵循资源寻址规则。 有关更多信息,请参见访问 OData 服务 (WCF Data Services)。 在调用包含查询请求对象的 ExecuteBatch 方法时,会将批处理查询请求发送到数据服务。 此方法返回一个 DataServiceResponse 对象,它是代表对批中各个查询的响应的 QueryOperationResponse<T> 对象的集合,其中每个对象包含查询返回的对象集合或错误信息。 当批中任何一个查询操作失败时,将针对失败的操作在 QueryOperationResponse<T> 对象中返回错误信息,并继续执行其余操作。 有关更多信息,请参见如何:在批处理中执行查询(WCF 数据服务)。
批处理查询也可以采用异步方式执行。 有关更多信息,请参见异步操作(WCF 数据服务)。
SaveChanges 操作批处理
调用 SaveChanges 方法时,会将上下文跟踪的所有更改转换为基于 REST 的操作,这些操作将作为请求发送到 OData 服务。 默认情况下,不会在同一请求消息中发送这些更改。 若要求在一个请求中发送所有更改,必须调用 SaveChanges(SaveChangesOptions) 方法,并在为此方法提供的 SaveChangesOptions 枚举中包括 Batch 值。
此外,还可以采用异步方式保存批处理更改。 有关更多信息,请参见异步操作(WCF 数据服务)。