Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Envía de forma sincrónica un grupo de consultas como un lote al servicio de datos.
No compatible con el cliente de WCF Data Services 5.0 para Silverlight.
Espacio de nombres: System.Data.Services.Client
Ensamblado: Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)
Sintaxis
'Declaración
Public Function ExecuteBatch ( _
ParamArray queries As DataServiceRequest() _
) As DataServiceResponse
'Uso
Dim instance As DataServiceContext
Dim queries As DataServiceRequest()
Dim returnValue As DataServiceResponse
returnValue = instance.ExecuteBatch(queries)
public DataServiceResponse ExecuteBatch(
params DataServiceRequest[] queries
)
public:
DataServiceResponse^ ExecuteBatch(
... array<DataServiceRequest^>^ queries
)
member ExecuteBatch :
queries:DataServiceRequest[] -> DataServiceResponse
public function ExecuteBatch(
... queries : DataServiceRequest[]
) : DataServiceResponse
Parámetros
- queries
Tipo: array<System.Data.Services.Client.DataServiceRequest[]
Matriz de objetos array<DataServiceRequest[] que constituyen las consultas.
Valor devuelto
Tipo: System.Data.Services.Client.DataServiceResponse
Respuesta a la operación por lotes.
Comentarios
Las consultas se especifican como instancias de DataServiceRequest<TElement>. Devuelve un DataServiceResponse que representa la respuesta de la solicitud por lotes como un conjunto. Las respuestas de consulta individuales se representan como objetos OperationResponse individuales a los que se puede obtener acceso enumerando la instancia de DataServiceResponse.
Cuando este método vuelve, toda la respuesta HTTP para la solicitud por lotes se ha leído del flujo de red, pero no se han procesado las respuestas. No se produce ninguna resolución de identidades ni materialización de objetos para una entidad especificada en la respuesta hasta que se enumere.
Ejemplos
En el ejemplo siguiente se muestra cómo llamar al método ExecuteBatch() para ejecutar una matriz de los objetos DataServiceRequest<TElement> que contiene consultas que devuelven objetos Products y Customers del servicio de datos de Northwind. La colección de objetos QueryOperationResponse<T> del objeto DataServiceResponse devuelto es de tipo enumerado y la colección de objetos contenida en cada QueryOperationResponse<T> también lo es. En este ejemplo se usa el DataServiceContext generado por la herramienta Agregar referencia de servicio basándose en el servicio de datos de Northwind, que se crea cuando se completa el tutorial rápido de Servicios de datos de Microsoft WCF.
Dim customerId = "ALFKI"
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Create the separate query URI's, one that returns
' a single customer and another that returns all Products.
Dim customerUri = New Uri(svcUri.AbsoluteUri & _
"/Customers('" & customerId & "')/?$expand=Orders")
Dim productsUri = New Uri(svcUri.AbsoluteUri & _
"/Products")
' Create the query requests.
Dim customerQuery = New DataServiceRequest(Of Customer)(customerUri)
Dim productsQuery = New DataServiceRequest(Of Product)(productsUri)
' Add the query requests to a batch request array.
Dim batchRequests = _
New DataServiceRequest() {customerQuery, productsQuery}
Dim batchResponse As DataServiceResponse
Try
' Execute the query batch and get the response.
batchResponse = context.ExecuteBatch(batchRequests)
If batchResponse.IsBatchResponse Then
' Parse the batchResponse.BatchHeaders.
End If
' Enumerate over the results of the query.
For Each response As QueryOperationResponse In batchResponse
' Handle an error response.
If response.StatusCode > 299 OrElse response.StatusCode < 200 Then
Console.WriteLine("An error occurred.")
Console.WriteLine(response.Error.Message)
Else
' Find the response for the Customers query.
If response.Query.ElementType Is GetType(Customer) Then
For Each customer As Customer In response
Console.WriteLine("Customer: {0}", customer.CompanyName)
For Each order As Order In customer.Orders
Console.WriteLine("Order ID: {0} - Freight: {1}", _
order.OrderID, order.Freight)
Next
Next
' Find the response for the Products query.
ElseIf response.Query.ElementType Is GetType(Product) Then
For Each product As Product In response
Console.WriteLine("Product: {0}", product.ProductName)
Next
End If
End If
Next
' This type of error is raised when the data service returns with
' a response code < 200 or >299 in the top level element.
Catch ex As DataServiceRequestException
' Get the response from the exception.
batchResponse = ex.Response
If (batchResponse.IsBatchResponse) Then
' Parse the batchResponse.BatchHeaders.
End If
For Each response As QueryOperationResponse In batchResponse
If response.Error IsNot Nothing Then
Console.WriteLine("An error occurred.")
Console.WriteLine(response.Error.Message)
End If
Next
End Try
string customerId = "ALFKI";
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Create the separate query URI's, one that returns
// a single customer and another that returns all Products.
Uri customerUri = new Uri(svcUri.AbsoluteUri +
"/Customers('" + customerId + "')/?$expand=Orders");
Uri productsUri = new Uri(svcUri.AbsoluteUri +
"/Products");
// Create the query requests.
DataServiceRequest<Customer> customerQuery =
new DataServiceRequest<Customer>(customerUri);
DataServiceRequest<Product> productsQuery =
new DataServiceRequest<Product>(productsUri);
// Add the query requests to a batch request array.
DataServiceRequest[] batchRequests =
new DataServiceRequest[]{customerQuery, productsQuery};
DataServiceResponse batchResponse;
try
{
// Execute the query batch and get the response.
batchResponse = context.ExecuteBatch(batchRequests);
if (batchResponse.IsBatchResponse)
{
// Parse the batchResponse.BatchHeaders.
}
// Enumerate over the results of the query.
foreach (QueryOperationResponse response in batchResponse)
{
// Handle an error response.
if (response.StatusCode > 299 || response.StatusCode < 200)
{
Console.WriteLine("An error occurred.");
Console.WriteLine(response.Error.Message);
}
else
{
// Find the response for the Customers query.
if (response.Query.ElementType == typeof(Customer))
{
foreach (Customer customer in response)
{
Console.WriteLine("Customer: {0}", customer.CompanyName);
foreach (Order order in customer.Orders)
{
Console.WriteLine("Order ID: {0} - Freight: {1}",
order.OrderID, order.Freight);
}
}
}
// Find the response for the Products query.
else if (response.Query.ElementType == typeof(Product))
{
foreach (Product product in response)
{
Console.WriteLine("Product: {0}", product.ProductName);
}
}
}
}
}
// This type of error is raised when the data service returns with
// a response code < 200 or >299 in the top level element.
catch (DataServiceRequestException e)
{
// Get the response from the exception.
batchResponse = e.Response;
if (batchResponse.IsBatchResponse)
{
// Parse the batchResponse.BatchHeaders.
}
foreach (QueryOperationResponse response in batchResponse)
{
if (response.Error != null)
{
Console.WriteLine("An error occurred.");
Console.WriteLine(response.Error.Message);
}
}
}
Vea también
Referencia
Espacio de nombres System.Data.Services.Client