Parametri delle operazioni di servizio (framework di ADO.NET Data Services)

Le operazioni di servizio supportate dal framework di ADO.NET Data Services consentono a un servizio dati di esporre sul server un metodo identificato da un URI, analogamente a tutte le altre risorse ADO.NET Data Services. I parametri possono essere passati al metodo delle operazioni del servizio utilizzando la stringa di query dell'URI.

Le operazioni di servizio vengono create aggiungendo metodi alla classe che eredita la classe System.Data.Services.DataService e che rappresenta lo stesso servizio dati.

Nel codice seguente viene creata un'operazione di servizio che calcola tutti i clienti presenti in una specifica città. Si noti che il riferimento a this.CurrentDataSource consente di accedere alla sessione del database.

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

Per richiamare l'operazione del servizio, viene utilizzato il formato URI con i parametri della stringa di query mappati direttamente agli argomenti del metodo, ad esempio http://host/northwind.svc/CustomersByCity?city=London.

L'operazione del servizio di esempio precedente non restituisce direttamente i dati richiesti dal chiamante, bensì un oggetto query di tipo IQueryable<T>. IQueryable<T> è supportato dalla funzionalità LINQ (Language Integrated Query) di .NET Framework v3.5 SP1. Tramite la restituzione di query anziché di dati, nel framework di ADO.NET Data Services sono disponibili opzioni di filtraggio, ordinamento e paging. La query http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName, ad esempio, crea una query con l'opzione di ordinamento e restituisce i risultati ordinati in base a CompanyName.

Per vincolare l'operazione di servizio in modo che non possano essere creati operatori aggiuntivi, è necessario restituire i risultati dell'operazione anziché un oggetto query. Nell'esempio precedente il tipo restituito del metodo deve essere IEnumerable<T> oppure void se il metodo non restituisce risultati.

Vedere anche

Concetti

Opzioni query di ADO.NET Data Services
Opzioni query del sistema ADO.NET Data Services

Altre risorse

Entity Data Model