URI-Format für Adressressourcen (ADO.NET Data Services-Framework)
Alle Entitäten, auf die in ADO.NET Data Services zugegriffen werden kann, sind durch URIs adressierbar. URIs von ADO.NET Data Services entsprechen der allgemeinen URI-Grammatik und verwenden HTTP (Hypertext Transfer Protocol). ADO.NET Data Services-URIs bestehen aus drei Abschnitten: Dienststamm, Ressourcenpfad und Abfrageoptionen. Diese Abschnitte bilden den URI, mit dem alle Ressourcen in ADO.NET Data Services adressiert werden.
Dienststamm
Der URI-Abschnitt mit dem Dienststamm stellt den Speicherort des Stamms von ADO.NET Data Services dar. Die Ressource, die dem Stamm von ADO.NET Data Services zugeordnet ist, beschreibt alle EntitySet, AssociationSet und/oder Dienstvorgänge des Diensts. Folgende gültige URIs enthalten nur das Schema- und Dienstnamenelement:
https://www.contoso.com
http://::1:8080/myservice.svc
https://www.contoso.com/path/myservice.svc/
Ressourcenpfad
Das Ressourcenpfadelement des URI legt fest, wie Entitätenmenge, Entitätstyp, Navigationseigenschaft, Navigationslink, Eigenschaft, komplexer Typ und Dienstvorgangsnamen zusammengesetzt werden, damit ein URI für die Ressourcenidentifizierung in ADO.NET Data Services erstellt werden kann.
Das Ressourcenpfadelement des URI ermöglicht das Filtern und Durchsuchen eines Entitätendiagramms in einem Datendienst. In diesem Abschnitt sind keine Konstrukte zum Ändern des Formats einer Anforderungsantwort enthalten, die an den angegebenen URI gesendet wird. Informationen zum Ändern des Antwortformats finden Sie unter Abfrageoptionen von ADO.NET Data Services.
Folgende gültige URIs enthalten das Schema-, Dienststamm- und Ressourcenpfadelement:
https://www.contoso.com/myservice.svc/Customers
https://www.contoso.com/Customers(123)
https://www.contoso.com/Customers(123)/Orders
https://www.contoso.com/Customers(123)/$links/Orders
https://www.contoso.com/Products(ID=’ABC’)/Category
https://www.contoso.com/Teams(Conference=’ACC’, League=’NCCC’)/Roster
Weitere Informationen zur Syntax des Ressourcenpfads finden Sie unter Ressourcenpfadregeln und -semantik (ADO.NET Data Services-Framework).
Abfrageoptionen
Der URI-Abschnitt mit den Abfrageoptionen gibt zwei Informationstypen an: Systemabfrageoptionen und Dienstvorgangparameter. Für Abfrageoptionen gelten folgende Regeln:
In einer einzigen URI-Abfragezeichenfolge kann eine beliebige Anzahl der unterstützten Abfrageoptionen festgelegt werden.
Jede Abfrageoption kann in einer Abfragezeichenfolge enthalten sein, unabhängig davon, ob die Zeichenfolge bereits andere Optionen enthält.
Die Reihenfolge der Abfrageoptionen in einem URI spielt keine Rolle.
In Abfrageoptionsnamen wird die Groß-/Kleinschreibung berücksichtigt.
In Abfrageoptionswerten wird die Groß-/Kleinschreibung berücksichtigt.
In einer Abfragezeichenfolge eines Anforderungs-URI darf eine bestimmte Systemabfrageoption nur einmal enthalten sein.
Weitere Informationen zur Abfragesemantik finden Sie unter Abfrageoptionen von ADO.NET Data Services und ADO.NET Data Services-Systemabfrageoptionen.
Beispiele
Folgende URIs sind Beispiele der ADO.NET Data Services-Syntax. Jeder URI enthält eine Beschreibung über die vom Dienst angewendete Analysemethode.
Gibt von allen Orders
in der Datenquelle nur die Orders
zurück, deren ID
-Eigenschaft den Wert 201 hat.
http://host/service.svc/Orders?$filter=ID%20eq%201
Sucht alle Customers
, deren fullname
-Eigenschaft den Wert "Jones, David" hat.
http://host/service.svc/Customers?$filter=
'Jones, David' eq insert(fullname, length(lastname), ',')
Der arithmetische Ausdruck wird nicht in Form von (1 + 2) * 3, sondern in Form von 1 + (2 * 3) analysiert. Der Filterausdruck dient nur als Test, für den stets der Wert "true" ausgegeben wird, sodass der URI eine Anforderung für alle OrderLines
darstellt.
http://host/service.svc/OrderLines?$filter=1 add 2 mul 3 lt 10
Abstrakte Syntax
Folgende Regeln geben Syntaxelemente zum Erstellen eines ADO.NET Data Service-URI gemäß der Definition der verstärkten Backus-Naur-Formspezifikation in RFC 4234 wieder. ADO.NET Data Services-URIs bestehen aus drei Abschnitten: Dienststamm, Ressourcenpfad und Abfrageoptionen. Zusammen bilden diese Abschnitte den URI, mit dem alle Ressourcen in ADO.NET Data Service adressiert werden.
ADO.NET_DS_URI = "http://" serviceRoot [ resourcePath ["?" queryOptions ] ]
ServiceRoot = host [ ":" port ] [*( "/" segment-nz )]
ResourcePath = "/" EntitySet | serviceOperation [ navPath ]
navPath = ("("keyPredicate")" [ navPath_np / propertyPath / propertyPath_ct ] )
navPath_np = "/" ("$links" / NavigationProperty) /
(NavigationProperty [ navPath ])
EntityPropertyPath = "/" EntityProperty [ "/$value" ]
ComplexTypePropertyPath_ct = 1*("/" ComplexType) [ propertyPath ]
keyPredicate = keyPredicate_single | keyPredicate_cmplx
keyPredicate_single = 1*DIGIT | ("’" 1*unreserved "’") | 1*(HEXDIGHEXDIG)) |
keyPredicate_complex
//NOTE: strings, GUIDs and dates are quoted
keyPredicate_cmplx = resourceProp "=" keyPredicate [“,” keyPredicate_cmplx]
queryOptions = sysQueryOperation / serviceOpParamName
*("&" sysQueryOperation / serviceOpParam)
DIGIT = as defined in RFC 3986 (0-9)
Host = as defined in RFC 3986
Port = as defined in RFC 3986
segment-nz = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)
pchar = as defined in RFC 3986 (A non empty sequence of chars outside set of URI reserved characters.)
serviceOperation = the name of a service operation.
EntitySet = the name of an EntitySet. Allowed characters match the set of allowed characters for EntitySet names in the EDM specification.
EntityType = The name of an EntityType within the EntitySet referenced in the prior path segment. Allowed characters match the set of allowed characters for EntityType names in the EDM specification.
Property = The name of a property on the entity type or complex type in the prior path segment or current path segment if filtering by key. Allowed characters match the set of allowed characters for EntityType property names in the EDM specification.
NavigationProperty = the name of a NavigationProperty or Navigation Link on the EntityType in the prior path segment. If the prior segment is an EntitySet,this property must be on the type within the given set. Allowed characters match the set of allowed characters for NavigationProperty names in the EDM specification.
systemQueryOperation = "$" query "=" query
serviceOperationParam = query "=" query
Weitere Informationen und Beispiele zur URI-Syntax finden Sie unter Ressourcenpfadregeln und -semantik (ADO.NET Data Services-Framework).
Siehe auch
Konzepte
Ressourcenpfadregeln und -semantik (ADO.NET Data Services-Framework)
Abfrageoptionen von ADO.NET Data Services
ADO.NET Data Services-Systemabfrageoptionen