DataServiceContext.ExecuteBatch(DataServiceRequest[]) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Soumet un groupe de requêtes au service de données sous forme de lot.
public:
System::Data::Services::Client::DataServiceResponse ^ ExecuteBatch(... cli::array <System::Data::Services::Client::DataServiceRequest ^> ^ queries);
public System.Data.Services.Client.DataServiceResponse ExecuteBatch (params System.Data.Services.Client.DataServiceRequest[] queries);
member this.ExecuteBatch : System.Data.Services.Client.DataServiceRequest[] -> System.Data.Services.Client.DataServiceResponse
Public Function ExecuteBatch (ParamArray queries As DataServiceRequest()) As DataServiceResponse
Paramètres
- queries
- DataServiceRequest[]
Tableau d'objets DataServiceRequest qui composent les requêtes.
Retours
Réponse à l'opération de traitement par lot.
Exemples
L'exemple suivant montre comment appeler la méthode ExecuteBatch pour exécuter un tableau d'objets DataServiceRequest<TElement> qui contient des requêtes qui retournent des objets Customers
et Products
du service de données Northwind. La collection d'objets QueryOperationResponse<T> dans le DataServiceResponse retourné est énumérée, et la collection d'objets contenue dans chaque QueryOperationResponse<T> est également énumérée. Cet exemple utilise le DataServiceContext généré par l’outil Ajouter une référence de service basé sur le service de données Northwind, qui est créé lorsque vous terminez la WCF Data Services .
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);
}
}
}
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
Remarques
Les requêtes sont spécifiées sous forme d'instances DataServiceRequest<TElement>. Retourne un DataServiceResponse qui représente la réponse de la requête de lots dans son ensemble. Les différentes réponses aux requêtes sont représentées sous la forme d'objets OperationResponse individuels accessibles en énumérant l'instance DataServiceResponse.
Au retour de cette méthode, la réponse HTTP entière pour la requête de lots a été lue à partir d'un flux de réseau, mais les réponses n'ont pas été traitées. Aucune résolution d’identité ou matérialisation d’objets ne se produit pour une entité spécifiée dans la réponse avant son énumération.