Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

DataServiceRequest<TElement>-Klasse

Aktualisiert: November 2007

Stellt Anforderungsobjekte dar, die als Batch an den Datendienst gesendet werden.

Namespace:  System.Data.Services.Client
Assembly:  System.Data.Services.Client (in System.Data.Services.Client.dll)
public sealed class DataServiceRequest<TElement> : DataServiceRequest

J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

TElement

In einer Gruppe von als Batch an den Datendienst gesendeten Abfragen werden die Abfragen als DataServiceRequest<TElement>-Instanzen angegeben. Es wird eine DataServiceResponse zurückgegeben, die die Antwort der Batchanforderung im Ganzen darstellt. Einzelne Abfrageantworten werden als von OperationResponse abgeleitete QueryOperationResponse-Objekte dargestellt, auf die durch die Enumeration der DataServiceResponse-Instanz zugegriffen werden kann.

Wenn ExecuteBatch beendet wird, wurde die gesamte HTTP-Antwort für die Batchanforderung aus dem Netzwerkstream gelesen, die Antworten wurden jedoch nicht verarbeitet. Für einen angegebenen Eintrag in der Antwort erfolgen nur dann eine Identitätsauflösung und Objektmaterialisierung, wenn dieser wie im folgenden Beispiel gezeigt durchlaufen wird.

DataServiceContext service = new DataServiceContext(new 
                                                    Uri("http://myserviceroot"));

// Create query batches.
DataServiceRequest[] reqs = new DataServiceRequest[] { 
    new DataServiceRequest<Category>(
            new Uri("http://myserviceroot/Categories")),
            new DataServiceRequest<Customer>(
            new Uri("http://myserviceroot/Customers"))
};

DataServiceResponse dsr;
try
{
    // Client will not throw an exception on ExecuteBatch because the 
    // entire response has not been processed yet to know
    // whether an exception should be thrown.

    dsr = service.ExecuteBatch(reqs);   

    if (dsr.IsBatchResponse) 
    {
        /*inspect HTTP artifacts associated with the entire batch:
                      dsr.BatchHeaders, dsr.BatchStatusCode*/ }

    foreach (QueryOperationResponse qr in dsr)
    {
        if (IsErrorStatusCode(qr.StatusCode))   
        {
            //q.Error.Message contains the full contents of the error.
            /* process any part of the Error Contract (<error> element)
                      sent from the service.  */
            }
        }
        else
        {
            if (qr.Query.ElementType == typeof(Customer))
            {
                //process customers
                foreach (Customer c in qr){ /*process the customer*/ }
                
                // the DataServiceContext does not materialize, resolve
                // identity on Customer until it is enumerated.
            }
            else if (qr.Query.ElementType == typeof(Category))
            {
                // Process categories.
                foreach (Category cat in qr)
                { 
                    /*process the category*/ 
                 }
                // the DataServiceContext does not materialize or
                // resolve identity on the Category until
                // it is enumerated.
                // This means that instream errors will be thrown
                // during iteration.
            }
        }
    }
}
catch (DataServiceRequestException e)
{
    // This error is thrown if the data service returns with
    // a response code < 200 or >299 or the top level element.
    // If neither of the above or true, this exception is not 
    // thrown.

    dsr = e.Response;
    
    if (dsr.IsBatchResponse) 
    { 
        /*inspect HTTP artifacts associated with the entire batch:
                        dsr.BatchHeaders, dsr.BatchStatusCode*/ 
    }
    
    /* There will always only be one of these because if the top level
     status code was >=200 and =<299 and the first element was not an
     error, the call to start the query will not throw. */

    foreach (QueryOperationResponse qr in dsr)
    {
        if (qr.Error != null)
        {
            // Process error.
        }
    }   
}

System.Object
  System.Data.Services.Client.DataServiceRequest
    System.Data.Services.Client.DataServiceRequest<TElement>
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5 SP1
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.