DataServiceContext.ExecuteBatch(DataServiceRequest[]) 메서드

정의

쿼리 그룹을 데이터 서비스에 일괄 처리로 제출합니다.

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

매개 변수

queries
DataServiceRequest[]

쿼리를 구성하는 개체의 DataServiceRequest 배열입니다.

반품

일괄 처리 작업에 대한 응답입니다.

예제

다음 예제에서는 메서드를 호출 ExecuteBatch 하여 Northwind 데이터 서비스에서 둘 다 DataServiceRequest<TElement> 반환하는 쿼리와 Customers 개체를 포함하는 개체 배열 Products 을 실행하는 방법을 보여 줍니다. 반환 QueryOperationResponse<T> 된 개체의 DataServiceResponse 컬렉션이 열거되고 각 QueryOperationResponse<T> 개체에 포함된 개체 컬렉션도 열거됩니다. 이 예제에서는 WCF Data Services를 완료할 때 만들어지는 Northwind 데이터 서비스를 기반으로 서비스 참조 추가 도구에서 생성한 것을 사용합니다 DataServiceContext .

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

설명

쿼리는 인스턴스로 DataServiceRequest<TElement> 지정됩니다. DataServiceResponse 일괄 처리 요청의 응답을 전체적으로 나타내는 값을 반환합니다. 개별 쿼리 응답은 인스턴스를 열거 OperationResponse 하여 액세스할 수 있는 개별 DataServiceResponse 개체로 표시됩니다.

이 메서드가 일괄 처리 요청에 대한 전체 HTTP 응답을 반환하는 경우 네트워크 스트림에서 읽어왔지만 응답은 처리되지 않았습니다. 응답에서 지정된 엔터티가 열거될 때까지 ID 확인 또는 개체 구체화가 발생하지 않습니다.

적용 대상

추가 정보