DataServiceContext.Execute 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.
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
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
- Chargement de contenu différé (services de données WCF)
- Comment : charger les résultats paginés (services de données WCF)