Accesso alle risorse di un servizio dati (WCF Data Services)Accessing Data Service Resources (WCF Data Services)

WCF Data ServicesWCF Data Services supporta il Protocollo OData (Open Data)Open Data Protocol (OData) per esporre dati come feed con risorse indirizzabili tramite URI. supports the Protocollo OData (Open Data)Open Data Protocol (OData) to expose your data as a feed with resources that are addressable by URIs. Queste risorse sono rappresentate in base alle convenzioni entità-relazione del Entity Data Model.These resources are represented according to the entity-relationship conventions of the Entity Data Model. In questo modello le entità rappresentano unità operative di dati che corrispondono a tipi di dati in un dominio di applicazione, ad esempio clienti, ordini, elementi e prodotti.In this model, entities represent operational units of data that are data types in an application domain, such as customers, orders, items, and products. L'accesso ai dati di entità e la relativa modifica sono possibili mediante la semantica REST (Representational State Transfer), in particolare i verbi GET, PUT, POST e DELETE standard HTTP.Entity data is accessed and changed by using the semantics of representational state transfer (REST), specifically the standard HTTP verbs of GET, PUT, POST, and DELETE.

Indirizzamento di risorseAddressing Resources

In ODataOData i dati esposti vengono indirizzati dal modello di dati tramite un URI.In ODataOData, you address any data exposed by the data model by using a URI. Ad esempio, l'URI seguente restituisce un feed che corrisponde al set di entità Customers, che contiene le voci per tutte le istanze del tipo di entità Customer:For example, the following URI returns a feed that is the Customers entity set, which contains entries for all instances of the Customer entity type:

http://services.odata.org/Northwind/Northwind.svc/Customers  

Le entità dispongono di proprietà speciali denominate chiavi di entità.Entities have special properties called entity keys. Una chiave di entità viene usata per identificare in modo univoco una singola entità in un set di entità.An entity key is used to uniquely identify a single entity in an entity set. In questo modo è possibile indirizzare un'istanza specifica di un tipo di entità nel set di entità.This enables you to address a specific instance of an entity type in the entity set. L'URI seguente restituisce ad esempio una voce per un'istanza specifica del tipo di entità Customer che presenta un valore chiave corrispondente ad ALFKI:For example, the following URI returns an entry for a specific instance of the Customer entity type that has a key value of ALFKI:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')  

Le proprietà primitive e complesse di un'istanza di entità possono anche essere indirizzate singolarmente.Primitive and complex properties of an entity instance can also be individually addressed. L'URI seguente restituisce ad esempio un elemento XML che contiene il valore della proprietà ContactName per un cliente (Customer) specifico:For example, the following URI returns an XML element that contains the ContactName property value for a specific Customer:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/ContactName  

Se si include l'endpoint $value nell'URI precedente, nel messaggio di risposta viene restituito solo il valore della proprietà primitiva.When you include the $value endpoint in the previous URI, only the value of the primitive property is returned in the response message. Nell'esempio seguente viene restituita solo la stringa "Maria Anders" senza l'elemento XML:The following example returns only the string "Maria Anders" without the XML element:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/ContactName/$value  

Le relazioni tra entità vengono definite mediante associazioni nel modello di dati.Relationships between entities are defined in the data model by associations. Queste associazioni consentono di indirizzare entità correlate usando le proprietà di navigazione di un'istanza di entità.These associations enable you to address related entities by using navigation properties of an entity instance. Una proprietà di navigazione può restituire una sola entità correlata, nel caso di una relazione molti-a-uno, o un set di entità correlate, nel caso di una relazione uno-a-molti.A navigation property can return either a single related entity, in the case of a many-to-one relationship, or a set of related entities, in the case of a one-to-many relationship. L'URI seguente restituisce ad esempio un feed che corrisponde al set di tutte le entità Order correlate a un cliente specifico:For example, the following URI returns a feed that is the set of all the Orders that are related to a specific Customer:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders  

Le relazioni, che in genere sono bidirezionali, sono rappresentate da una coppia di proprietà di navigazione.Relationships, which are usually bi-directional, are represented by a pair of navigation properties. Al contrario della relazione mostrata nell'esempio precedente, l'URI seguente restituisce un riferimento all'entità Customer alla quale appartiene un'entità Order specifica:As the reverse of the relationship shown in the previous example, the following URI returns a reference to the Customer entity to which a specific Order entity belongs:

http://services.odata.org/Northwind/Northwind.svc/Orders(10643)/Customer  

ODataOData consente inoltre alle risorse di indirizzo in base ai risultati delle espressioni di query. also enables you to address resources based on the results of query expressions. Ciò consente di filtrare i set di risorse in base a un'espressione valutata.This makes it possible to filter sets of resources based on an evaluated expression. L'URI seguente consente ad esempio di filtrare le risorse per restituire solo gli ordini per il cliente specificato inviati dal 22 settembre 1997:For example, the following URI filters the resources to return only the Orders for the specified Customer that have shipped since September 22, 1997:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders?$filter=ShippedDate gt datetime'1997-09-22T00:00:00'  

Per ulteriori informazioni, vedere OData: convenzioni URI.For more information, see OData: URI Conventions.

Opzioni di query di sistemaSystem Query Options

ODataOData definisce un set di opzioni di query di sistema che è possibile utilizzare per eseguire operazioni di query tradizionali in base alle risorse, quali filtro, ordinamento e paging. defines a set of system query options that you can use to perform traditional query operations against resources, such as filtering, sorting, and paging. Ad esempio, l'URI seguente restituisce il set di tutti i Order entità, insieme alle Order_Detail entità, i codici di avviamento postali non terminano con 100:For example, the following URI returns the set of all the Order entities, along with related Order_Detail entities, the postal codes of which do not end in 100:

http://services.odata.org/Northwind/Northwind.svc/Orders?$filter=not endswith(ShipPostalCode,'100')&$expand=Order_Details&$orderby=ShipCity  

Le voci del feed restituito vengono inoltre ordinate in base al valore della proprietà ShipCity degli ordini.The entries in the returned feed are also ordered by the value of the ShipCity property of the orders.

WCF Data ServicesWCF Data Services supporta i seguenti ODataOData opzioni di query di sistema: supports the following ODataOData system query options:

Opzione queryQuery Option DescrizioneDescription
$orderby Definisce un tipo di ordinamento predefinito per le entità del feed restituito.Defines a default sort order for entities in the returned feed. Nella query seguente il feed restituito dei clienti viene ordinato in base al paese e alla città:The following query orders the returned customers feed by county and city:

http://services.odata.org/Northwind/Northwind.svc/Customers?$orderby=Country,City

Per ulteriori informazioni, vedere OData: opzione Query di sistema OrderBy ($orderby).For more information, see OData: OrderBy System Query Option ($orderby).
$top Specifica il numero di entità da includere nel feed restituito.Specifies the number of entities to include in the returned feed. Nell'esempio seguente vengono ignorati i primi 10 clienti, quindi vengono restituiti i successivi 10:The following example skips the first 10 customers and then returns the next 10:

http://services.odata.org/Northwind/Northwind.svc/Customers?$skip=10&$top=10

Per ulteriori informazioni, vedere OData: opzione Query di sistema Top ($top).For more information, see OData: Top System Query Option ($top).
$skip Specifica il numero di entità da ignorare prima di avviare la restituzione delle entità nel feed.Specifies the number of entities to skip before starting to return entities in the feed. Nell'esempio seguente vengono ignorati i primi 10 clienti, quindi vengono restituiti i successivi 10:The following example skips the first 10 customers and then returns the next 10:

http://services.odata.org/Northwind/Northwind.svc/Customers?$skip=10&$top=10

Per ulteriori informazioni, vedere OData: opzione Query di sistema Skip ($skip).For more information, see OData: Skip System Query Option ($skip).
$filter Definisce un'espressione che filtra le entità restituite nel feed in base a criteri specifici.Defines an expression that filters the entities returned in the feed based on specific criteria. Questa opzione query supporta un set di operatori di confronto logici, di operatori aritmetici e di funzioni di query predefinite che consentono di valutare l'espressione di filtro.This query option supports a set of logical comparison operators, arithmetic operators, and predefined query functions that are used to evaluate the filter expression. Nell'esempio seguente vengono restituiti tutti gli ordini in cui i codici di avviamento postale non terminano con 100:The following example returns all orders the postal codes of which do not end in 100:

http://services.odata.org/Northwind/Northwind.svc/Orders?$filter=not endswith(ShipPostalCode,'100')

Per ulteriori informazioni, vedere OData: opzione Query di sistema di filtro ($filter).For more information, see OData: Filter System Query Option ($filter).
$expand Specifica quali entità correlate vengono restituite dalla query.Specifies which related entities are returned by the query. Le entità correlate vengono incluse come feed o voce inline con l'entità restituita dalla query.Related entities are included as either a feed or an entry inline with the entity returned by the query. Nell'esempio seguente viene restituito l'ordine per il cliente "ALFKI" insieme ai dettagli relativi agli elementi di ogni ordine:The following example returns the order for the customer 'ALFKI' along with the item details for each order:

http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders?$expand=Order_Details

Per ulteriori informazioni, vedere OData: opzione sistema Expand Query ($expand).For more information, see OData: Expand System Query Option ($expand).
$select Indica che le proprietà dell'entità devono essere restituite nella proiezione.Specifies a projection that defines the properties of the entity are returned in the projection. Per impostazione predefinita, tutte le proprietà di un'entità vengono restituite in un feed.By default, all properties of an entity are returned in a feed. Nella query seguente vengono restituite solo tre proprietà dell'entità Customer:The following query returns only three properties of the Customer entity:

http://services.odata.org/Northwind/Northwind.svc/Customers?$select=CustomerID,CompanyName,City

Per ulteriori informazioni, vedere OData: opzione Select System Query ($select).For more information, see OData: Select System Query Option ($select).
$inlinecount Richiede l'inclusione nel feed di un conteggio del numero di entità restituite nel feed stesso.Requests that a count of the number of entities returned in the feed be included with the feed. Per ulteriori informazioni, vedere OData: opzione Query di sistema Inlinecount ($inlinecount).For more information, see OData: Inlinecount System Query Option ($inlinecount).

Indirizzamento delle relazioniAddressing Relationships

Oltre all'indirizzamento di set di entità e le istanze di entità, ODataOData consente inoltre di indirizzare le associazioni che rappresentano le relazioni tra entità.In addition to addressing entity sets and entity instances, ODataOData also enables you to address the associations that represent relationships between entities. Questa funzionalità è necessaria per creare o modificare una relazione tra due istanze di entità, ad esempio lo spedizioniere correlato a un determinato ordine nel database Northwind di esempio.This functionality is required to be able to create or change a relationship between two entity instances, such as the shipper that is related to a given order in the Northwind sample database. ODataOData supporta un $link operatore per indirizzare in modo specifico le associazioni tra entità. supports a $link operator to specifically address the associations between entities. L'URI seguente viene ad esempio specificato in un messaggio di richiesta PUT HTTP per modificare lo spedizioniere per l'ordine specificato in un nuovo spedizioniere.For example, the following URI is specified in an HTTP PUT request message to change the shipper for the specified order to a new shipper.

http://services.odata.org/Northwind/Northwind.svc/Orders(10643)/$links/Shipper  

Per ulteriori informazioni, vedere OData: indirizzamento di collegamenti tra voci.For more information, see OData: Addressing Links between Entries.

Utilizzo del feed restituitoConsuming the Returned Feed

L'URI di un ODataOData risorse consentono di eseguire indirizzo entità dati esposti dal servizio.The URI of an ODataOData resource enables you to address entity data exposed by the service. Quando si immette un URI nel campo dell'indirizzo di un Web browser, un ODataOData rappresentazione del feed della risorsa richiesta viene restituito.When you enter a URI into the address field of a Web browser, a ODataOData feed representation of the requested resource is returned. Per ulteriori informazioni, vedere il Guida rapida di WCF Data Services.For more information, see the WCF Data Services Quickstart. Sebbene un Web browser possa risultare utile per verificare che una risorsa del servizio dati restituisce i dati previsti, servizi di dati di produzione che possono inoltre creare, aggiornare ed eliminare dati vengono in genere eseguiti dal codice dell'applicazione o in una pagina Web linguaggi di scripting.Although a Web browser may be useful for testing that a data service resource returns the expected data, production data services that can also create, update, and delete data are generally accessed by application code or scripting languages in a Web page. Per ulteriori informazioni, vedere utilizza un servizio dati in un'applicazione Client.For more information, see Using a Data Service in a Client Application.

Vedere ancheSee Also

Sito Web Open Data ProtocolOpen Data Protocol Web site