Freigeben über


DataServiceContext.ExecuteBatch-Methode

Sendet synchron eine Gruppe von Abfragen als Batch an den Datendienst.

Wird vom WCF Data Services 5.0-Client für Silverlight nicht unterstützt.

Namespace:  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Syntax

'Declaration
Public Function ExecuteBatch ( _
    ParamArray queries As DataServiceRequest() _
) As DataServiceResponse
'Usage
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

Parameter

Rückgabewert

Typ: System.Data.Services.Client.DataServiceResponse
Die Antwort auf den Batchvorgang.

Hinweise

Die Abfragen werden als DataServiceRequest<TElement>-Instanzen angegeben. Gibt DataServiceResponse mit dfer Antwort auf die Batchanforderung als Ganzes zurück. Einzelne Abfrageantworten werden als einzelne OperationResponse-Objekte dargestellt, auf die durch das Auflisten der DataServiceResponse-Instanz zugegriffen werden können.

Nach dem Beenden dieser Methode wurde die ganze HTTP-Antwort für die Batchanforderung vom Netzwerkdatenstrom gelesen, aber die Antworten wurden nicht verarbeitet. Keine Identitätsauflösung oder Objektmaterialisierung für eine angegebene Entität in der Antwort, bis diese aufgelistet wird.

Beispiele

Im folgenden Beispiel wird gezeigt, wie die ExecuteBatch()-Methode zum Ausführen eines Arrays von DataServiceRequest<TElement>-Objekten aufgerufen wird, das Abfragen enthält, die das Customers-Objekt und das Products-Objekt aus dem Northwind-Datendienst zurückgeben. Die Auflistung von QueryOperationResponse<T>-Objekten in der zurückgegebenen DataServiceResponse wird aufgelistet, und die Auflistung von in jeder QueryOperationResponse<T> enthaltenen Objekten wird ebenfalls aufgelistet. In diesem Beispiel wird der vom Tool erzeugte DataServiceContext auf Grundlage des Northwind-Datendiensts hinzugefügt. Dieser wird erstellt, wenn Sie den WCF Data ServicesSchnellstart durchführen.

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);
        }
    }
}

Siehe auch

Verweis

DataServiceContext Klasse

System.Data.Services.Client-Namespace

Andere Ressourcen

Gewusst wie: Ausführen von Abfragen in einem Batch (WCF Data Services)