Partager via


DataServiceContext.Execute Méthode

Définition

Envoie une requête au service de données pour exécuter l'URI spécifique.

Surcharges

Execute<T>(DataServiceQueryContinuation<T>)

Envoie une requête au service de données pour récupérer la page de données suivante dans un résultat de requête paginé.

Execute<TElement>(Uri)

Envoie une requête au service de données pour exécuter l'URI spécifique.

Execute<T>(DataServiceQueryContinuation<T>)

Envoie une requête au service de données pour récupérer la page de données suivante dans un résultat de requête paginé.

public:
generic <typename T>
 System::Data::Services::Client::QueryOperationResponse<T> ^ Execute(System::Data::Services::Client::DataServiceQueryContinuation<T> ^ continuation);
public System.Data.Services.Client.QueryOperationResponse<T> Execute<T> (System.Data.Services.Client.DataServiceQueryContinuation<T> continuation);
member this.Execute : System.Data.Services.Client.DataServiceQueryContinuation<'T> -> System.Data.Services.Client.QueryOperationResponse<'T>
Public Function Execute(Of T) (continuation As DataServiceQueryContinuation(Of T)) As QueryOperationResponse(Of T)

Paramètres de type

T

Type retourné par la requête.

Paramètres

continuation
DataServiceQueryContinuation<T>

Objet DataServiceQueryContinuation<T> qui représente la page de données suivante à retourner à partir du service de données.

Retours

Réponse qui contient la page de données suivante dans le résultat de la requête.

Exceptions

Lorsqu'une erreur est levée, soit pendant l'exécution de la requête soit lors de la conversion du contenu du message de réponse en objets.

Remarques

L'objet DataServiceQueryContinuation<T> fourni contient l'URI qui, lorsqu'il est exécuté, retourne la page de données suivante dans le résultat de la requête.

S’applique à

Execute<TElement>(Uri)

Envoie une requête au service de données pour exécuter l'URI spécifique.

public:
generic <typename TElement>
 System::Collections::Generic::IEnumerable<TElement> ^ Execute(Uri ^ requestUri);
public System.Collections.Generic.IEnumerable<TElement> Execute<TElement> (Uri requestUri);
member this.Execute : Uri -> seq<'Element>
Public Function Execute(Of TElement) (requestUri As Uri) As IEnumerable(Of TElement)

Paramètres de type

TElement

Type retourné par la requête.

Paramètres

requestUri
Uri

URI vers lequel la requête d'interrogation sera envoyée. L'URI peut être n'importe quel URI de service de données valide. Peut contenir des paramètres de requête $.

Retours

IEnumerable<TElement>

Résultats de l'opération de requête.

Exceptions

Lorsqu'une réponse n'est pas reçue d'une requête à requestUri.

Lorsque requestUri est null.

Lorsque requestUri n'est pas un URI valide pour le service de données.

Lorsqu'une erreur est levée, soit pendant l'exécution de la requête soit lors de la conversion du contenu du message de réponse en objets.

Le service de données retourne une erreur HTTP 404 : Ressource introuvable.

Exemples

Cet exemple utilise une boucle do…while pour charger des entités Customers à partir de résultats paginés du service de données. La méthode Execute est appelée en utilisant l'URI de lien suivant pour recevoir la page de données suivante.

// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
DataServiceQueryContinuation<Customer> token = null;
int pageCount = 0;

try
{
    // Execute the query for all customers and get the response object.
    QueryOperationResponse<Customer> response =
        context.Customers.Execute() as QueryOperationResponse<Customer>;

    // With a paged response from the service, use a do...while loop
    // to enumerate the results before getting the next link.
    do
    {
        // Write the page number.
        Console.WriteLine("Page {0}:", pageCount++);

        // If nextLink is not null, then there is a new page to load.
        if (token != null)
        {
            // Load the new page from the next link URI.
            response = context.Execute<Customer>(token)
                as QueryOperationResponse<Customer>;
        }

        // Enumerate the customers in the response.
        foreach (Customer customer in response)
        {
            Console.WriteLine("\tCustomer Name: {0}", customer.CompanyName);
        }
    }

    // Get the next link, and continue while there is a next link.
    while ((token = response.GetContinuation()) != null);
}
catch (DataServiceQueryException ex)
{
    throw new ApplicationException(
        "An error occurred during query execution.", ex);
}
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Dim token As DataServiceQueryContinuation(Of Customer) = Nothing
Dim pageCount = 0

Try
    ' Execute the query for all customers and get the response object.
    Dim response As QueryOperationResponse(Of Customer) = _
        CType(context.Customers.Execute(), QueryOperationResponse(Of Customer))

    ' With a paged response from the service, use a do...while loop 
    ' to enumerate the results before getting the next link.
    Do
        ' Write the page number.
        Console.WriteLine("Page {0}:", pageCount + 1)

        ' If nextLink is not null, then there is a new page to load.
        If token IsNot Nothing Then
            ' Load the new page from the next link URI.
            response = CType(context.Execute(Of Customer)(token),  _
            QueryOperationResponse(Of Customer))
        End If

        ' Enumerate the customers in the response.
        For Each customer As Customer In response
            Console.WriteLine(vbTab & "Customer Name: {0}", customer.CompanyName)
        Next

        ' Get the next link, and continue while there is a next link.
        token = response.GetContinuation()
    Loop While token IsNot Nothing
Catch ex As DataServiceQueryException
    Throw New ApplicationException( _
            "An error occurred during query execution.", ex)
End Try

Remarques

La méthode Execute est utilisée pour interroger un service de données par URI. Elle génère l'émission d'une requête HTTP GET pour le service de données. L'URI spécifié de la requête peut être absolu ou relatif.

Si requestUri est absolu, cette méthode valide si l'URI désigne le même service de données que celui qui a été spécifié lors de la construction du DataServiceContext. Si requestUri est relatif, cette méthode supprime toutes les barres obliques de début et ajoute requestUri à ce qui a été fourni lors de la construction du DataServiceContext. Une barre oblique est ajoutée après l'URI passé au constructeur DataServiceContext, si elle n'est pas déjà présente.

Au retour de cette méthode, toutes les réponses HTTP pour la requête ont été lues à partir du flux de réseau, mais la réponse n'est pas traitée ; aucune résolution d'identité ou matérialisation d'objets n'est effectuée. La résolution d'identité et la matérialisation d'objets complète ne se produisent pas pour une entité spécifiée dans la réponse avant son énumération.

Voir aussi

S’applique à