Parámetros de operación de servicio (marco de trabajo de los servicios de datos de ADO.NET)

Las operaciones de servicio que el marco de trabajo de los servicios de datos de ADO.NET admite permite que los servicios de datos expongan métodos identificados mediante un URI igual que todos los demás recursos de servicios de datos de ADO.NET. Se pueden pasar parámetros al método de operación de servicio con la cadena de consulta de URI.

Para crear las operaciones de servicio se agregan métodos a la clase que hereda la clase System.Data.Services.DataService y que representa el servicio de datos en sí.

En el código siguiente se crea una operación de servicio que calcula todos los clientes de una ciudad especificada. Recuerde que la referencia a this.CurrentDataSource proporciona acceso a la sesión de base de datos.

public class Northwind : DataService<NorthwindEntities>
{
    [WebGet]
    public IQueryable<Customer> CustomersByCity(string city)
    {
        if (string.IsNullOrEmpty(city))
        {
            throw new ArgumentNullException("city",
                                   "You must provide a city name argument");
        }

        return this.CurrentDataSource.Customers.Where("it.City = @city",
                                  new ObjectParameter("city", city));
    }
}

Para invocar la operación de servicio, se utiliza el formato de URI con los parámetros de la cadena de consulta asignados directamente a los argumentos de método. Por ejemplo, http://host/northwind.svc/CustomersByCity?city=London.

El ejemplo de operación de servicio anterior no devuelve directamente los datos que el proceso que efectuó la llamada solicitó. En su lugar, la operación de servicio devuelve un objeto de consulta de tipo IQueryable<T>. La característica Language Integrated Query (LINQ) de .NET Framework v3.5 SP1 admite IQueryable<T>. Mediante la devolución de una consulta en lugar de los datos, el marco de trabajo de los servicios de datos de ADO.NET puede proporcionar aún opciones como filtrado, ordenación y paginación. Por ejemplo, la consulta http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName compone la consulta con la opción sort y devuelve los resultados ordenados por CompanyName.

Para limitar la operación de servicio de modo que no se puedan componer operadores adicionales, devuelva los resultados de la operación en lugar de un objeto de consulta. En el ejemplo anterior, el tipo devuelto del método tendría que ser IEnumerable<T> o void si el método no devuelve resultados.

Vea también

Conceptos

Opciones de consulta de los servicios de datos de ADO.NET
Opciones de consulta del sistema de servicios de datos de ADO.NET

Otros recursos

Entity Data Model