Compartir a través de


DataServiceContext.Execute<TElement> Método (Uri)

Envía una solicitud al servicio de datos para ejecutar un URI concreto.

No compatible con el cliente de WCF Data Services 5.0 para Silverlight.

Espacio de nombres:  System.Data.Services.Client
Ensamblado:  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Sintaxis

'Declaración
Public Function Execute(Of TElement) ( _
    requestUri As Uri _
) As IEnumerable(Of TElement)
'Uso
Dim instance As DataServiceContext
Dim requestUri As Uri
Dim returnValue As IEnumerable(Of TElement)

returnValue = instance.Execute(requestUri)
public IEnumerable<TElement> Execute<TElement>(
    Uri requestUri
)
public:
generic<typename TElement>
IEnumerable<TElement>^ Execute(
    Uri^ requestUri
)
member Execute : 
        requestUri:Uri -> IEnumerable<'TElement> 
JScript no admite tipos y métodos genéricos.

Parámetros de tipo

  • TElement
    Tipo devuelto por la consulta.

Parámetros

  • requestUri
    Tipo: System.Uri
    URI al que se enviará la solicitud de consulta.El URI puede ser cualquier URI de servicio de datos válido.Puede contener parámetros de consulta $.

Valor devuelto

Tipo: System.Collections.Generic.IEnumerable<TElement>
Resultados de la operación de consulta.

Excepciones

Excepción Condición
WebException

Cuando no se recibe ninguna respuesta de una solicitud a requestUri.

ArgumentNullException

Cuando requestUri es nulles una referencia NULL (Nothing en Visual Basic)..

ArgumentException

Cuando requestUri no es un URI válido para el servicio de datos.

InvalidOperationException

Cuando se produce un error durante la ejecución de la solicitud o cuando convierte el contenido del mensaje de respuesta en objetos.

DataServiceQueryException

Cuando el servicio de datos devuelve un error HTTP 404: Recurso no encontrado.

Comentarios

El método Execute se emplea para consultar un servicio de datos por URI; el método hace que se emita una solicitud HTTP GET al servicio de datos. El URI de solicitud especificado puede ser absoluto o relativo.

Si el requestUri es absoluto, este método valida si el URI apunta al mismo servicio de datos que se especificó al construir DataServiceContext. Si el requestUri es relativo, este método quita cualquier barra diagonal inicial y anexa requestUri a lo que se proporcionó al construir DataServiceContext. Se anexa una barra diagonal después del URI pasado al constructor DataServiceContext, si aún no hay una.

Cuando este método vuelve, toda la respuesta HTTP para la solicitud se ha leído del flujo de red, pero no se habrá procesado la respuesta; no se ha realizado ninguna resolución de identidades ni materialización de objetos. La resolución de identidades y la materialización de todos los objetos no se producen para una entidad especificada en la respuesta hasta que se enumere.

Ejemplos

En este ejemplo se usa un bucle do?while para cargar entidades Customers desde los resultados paginados del servicio de datos. Se llama al método Execute usando el URI de vínculo siguiente para recibir la siguiente página de datos.

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

Vea también

Referencia

DataServiceContext Clase

Sobrecarga de Execute

Espacio de nombres System.Data.Services.Client

Otros recursos

Cargar contenido aplazado (WCF Data Services)

Cómo: Cargar resultados paginados (WCF Data Services)