Sdílet prostřednictvím


Parameter von Dienstvorgängen (ADO.NET Data Services-Framework)

Vom ADO.NET Data Services-Framework unterstützte Dienstvorgänge ermöglichen einem Datendienst, eine Methode auf dem Server verfügbar zu machen. Dieser Server wird wie alle anderen Datendienstquellen in ADO.NET durch einen URI identifiziert. Parameter können mithilfe der URI-Abfragezeichenfolge an die Dienstvorgangsmethode weitergegeben werden.

Zum Erstellen von Dienstvorgängen werden Methoden zu der Klasse hinzugefügt, die von der System.Data.Services.DataService-Klasse erbt und den Datendienst selbst repräsentiert.

Der folgende Code erstellt einen Dienstvorgang, durch den alle Kunden in einer bestimmten Stadt ermittelt werden. Beachten Sie, dass durch den Verweis auf this.CurrentDataSource der Zugriff auf die Datenbanksitzung ermöglicht wird.

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

Für den Aufruf des Dienstvorgangs wird das URI-Format mit Abfragezeichenfolgenparametern verwendet, die direkt den Argumenten der Methode zugeordnet sind. Beispiel: http://host/northwind.svc/CustomersByCity?city=London.

Der obige Beispieldienstvorgang gibt nicht direkt die vom Aufrufer abgefragten Daten zurück. Stattdessen gibt der Dienstvorgang ein Abfrageobjekt vom Typ IQueryable<T> zurück. IQueryable<T> wird vom LINQ-Feature (Language Integrated Query) in .NET Framework v3.5 SP1 unterstützt. Durch die Rückgabe einer Abfrage anstelle der Daten kann das ADO.NET Data Services-Framework weiterhin Optionen wie Filtern, Sortieren und Paging zur Verfügung stellen. Die Abfrage http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName verbindet beispielsweise die Abfrage mit der Sortierungsoption und gibt die Ergebnisse nach CompanyName sortiert zurück.

Um den Dienstvorgang so einzuschränken, dass keine zusätzlichen Operatoren gebildet werden können, müssen anstelle eines Abfrageobjekts die Ergebnisse des Vorgangs zurückgegeben werden. Im obigen Beispiel müsste der Rückgabetyp der Methode das IEnumerable<T> oder Void sein, wenn die Methode keine Ergebnisse zurückgibt.

Siehe auch

Konzepte

Abfrageoptionen von ADO.NET Data Services
ADO.NET Data Services-Systemabfrageoptionen

Weitere Ressourcen

Entity Data Model