データ サービス リソースへのアクセス (WCF Data Services)Accessing Data Service Resources (WCF Data Services)

WCF Data ServicesWCF Data Services サポート、 Open Data Protocol (OData)Open Data Protocol (OData) Uri によってアドレス可能なリソースのフィードとしてデータを公開します。supports the Open Data Protocol (OData)Open Data Protocol (OData) to expose your data as a feed with resources that are addressable by URIs. これらのリソースはエンティティとリレーションシップの規則に従って表現、 Entity Data Modelします。These resources are represented according to the entity-relationship conventions of the Entity Data Model. このモデルでは、エンティティはアプリケーション ドメイン内のデータの操作単位 (データ型) を表します (顧客、注文、項目、製品など)。In this model, entities represent operational units of data that are data types in an application domain, such as customers, orders, items, and products. エンティティ データは、Representational State Transfer (REST) のセマンティクス (特に、標準的な HTTP 動詞である GET、PUT、POST、および DELETE) を使用してアクセスおよび変更できます。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.

リソースへの対処Addressing Resources

ODataOData では、データ モデルによって公開されたデータを、URI を使用してアドレス指定します。In ODataOData, you address any data exposed by the data model by using a URI. たとえば、次の URI には、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  

エンティティには、エンティティ キーという特別なプロパティがあります。Entities have special properties called entity keys. エンティティ キーは、エンティティ セット内の 1 つのエンティティを一意に識別するために使用されます。An entity key is used to uniquely identify a single entity in an entity set. そのため、エンティティ セット内のエンティティ型の特定のインスタンスのアドレスを指定できます。This enables you to address a specific instance of an entity type in the entity set. たとえば、次の URI は、ALFKI のキー値のある Customer エンティティ型の特定のインスタンスのエントリを返します。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')  

エンティティ インスタンスのプリミティブ プロパティおよび複合プロパティは、個別にアドレス指定することもできます。Primitive and complex properties of an entity instance can also be individually addressed. たとえば、次の URI は特定の Customer の ContactName プロパティ値が含まれた XML 要素を返します。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  

前の URI に $value エンドポイントを含めた場合、応答メッセージにはプリミティブ プロパティの値のみが返されます。When you include the $value endpoint in the previous URI, only the value of the primitive property is returned in the response message. 次の例では、XML 要素のない "Maria Anders" という文字列のみが返されます。The following example returns only the string "Maria Anders" without the XML element:

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

エンティティ間のリレーションシップは、アソシエーションによってデータ モデル内で定義されます。Relationships between entities are defined in the data model by associations. これらのアソシエーションによって、エンティティ インスタンスのナビゲーション プロパティを使用して関連エンティティをアドレス指定することが可能になります。These associations enable you to address related entities by using navigation properties of an entity instance. ナビゲーション プロパティは、単一の関連エンティティ (多対一のリレーションシップの場合) または関連エンティティのセット (一対多のリレーションシップの場合) のいずれかを返します。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. たとえば、次の URI は、特定の Customer に関連付けられたすべての Orders のセットであるフィードを返します。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  

リレーションシップは通常は双方向であり、ナビゲーション プロパティのペアで表されます。Relationships, which are usually bi-directional, are represented by a pair of navigation properties. 前の例で示したリレーションシップとは逆に、次の URI は特定の Order エンティティが属する Customer エンティティへの参照を返します。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 できますクエリ式の結果に基づいてリソースのアドレス。also enables you to address resources based on the results of query expressions. これにより、式の評価結果に基づいてリソースのセットをフィルター処理します。This makes it possible to filter sets of resources based on an evaluated expression. たとえば、次の URI は、リソースをフィルターして特定の Customer に 1997 年 9 月 22 日以降に出荷された Orders だけを返します。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'  

詳細については、次を参照してくださいOData:。URI 規則します。For more information, see OData: URI Conventions.

System Query Options (システム クエリ オプション)System Query Options

ODataOData フィルター処理、並べ替え、ページングなどのリソースに対する従来のクエリ操作の実行に使用できるシステム クエリ オプションのセットを定義します。defines a set of system query options that you can use to perform traditional query operations against resources, such as filtering, sorting, and paging. たとえば、次の URI はすべてのセットを返します、Order関連と共にOrder_Detailうち郵便で終わらないエンティティ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  

返されたフィードのエントリは、注文の ShipCity プロパティの値でも並べ替えられています。The entries in the returned feed are also ordered by the value of the ShipCity property of the orders.

WCF Data ServicesWCF Data Services 次のサポートODataODataシステム クエリ オプション。supports the following ODataOData system query options:

クエリ オプションQuery Option 説明Description
$orderby 返されるフィードのエンティティについて、既定の並べ替え順序を定義します。Defines a default sort order for entities in the returned feed. 次のクエリで返される Customers フィードは、国 (County) と都市 (City) で並べ替えられています。The following query orders the returned customers feed by county and city:

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

詳細については、次を参照してくださいOData:。OrderBy システム クエリ オプション ($orderby)します。For more information, see OData: OrderBy System Query Option ($orderby).
$top 返されるフィードに含まれるエンティティの数を指定します。Specifies the number of entities to include in the returned feed. 次の例では、最初の 10 件の顧客をスキップし、その次の 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

詳細については、次を参照してくださいOData:。Top システム クエリ オプション ($top)します。For more information, see OData: Top System Query Option ($top).
$skip フィードにエンティティを返し始めるまでにスキップするエンティティの数を指定します。Specifies the number of entities to skip before starting to return entities in the feed. 次の例では、最初の 10 件の顧客をスキップし、その次の 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

詳細については、次を参照してくださいOData:。Skip システム クエリ オプション ($skip)します。For more information, see OData: Skip System Query Option ($skip).
$filter フィードに返されるエンティティを特定の条件に基づいてフィルターする式を定義します。Defines an expression that filters the entities returned in the feed based on specific criteria. このクエリ オプションは、フィルター式の評価に使用される一連の論理比較演算子、算術演算子、および定義済みクエリ関数をサポートします。This query option supports a set of logical comparison operators, arithmetic operators, and predefined query functions that are used to evaluate the filter expression. 次の例は、郵便番号の末尾が 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')

詳細については、次を参照してくださいOData:。フィルター システム クエリ オプション ($filter)します。For more information, see OData: Filter System Query Option ($filter).
$expand クエリで返される関連エンティティを指定します。Specifies which related entities are returned by the query. 関連エンティティは、クエリで返されるエンティティにフィードまたはエントリとしてインラインで含まれています。Related entities are included as either a feed or an entry inline with the entity returned by the query. 次の例では、顧客 'ALFKI' の注文を各注文の品目の詳細と共に返します。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

詳細については、次を参照してくださいOData:。Expand システム クエリ オプションの ($ の展開)します。For more information, see OData: Expand System Query Option ($expand).
$select フィードとして返されるエンティティのプロパティを指定します。Specifies a projection that defines the properties of the entity are returned in the projection. 既定では、エンティティのすべてのプロパティがフィードとして返されます。By default, all properties of an entity are returned in a feed. 次のクエリでは、Customer エンティティの 3 つのプロパティが返されます。The following query returns only three properties of the Customer entity:

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

詳細については、次を参照してくださいOData:。選択システム クエリ オプション ($select)します。For more information, see OData: Select System Query Option ($select).
$inlinecount フィードで返されるエンティティの数のカウントがフィードに含まれるように要求します。Requests that a count of the number of entities returned in the feed be included with the feed. 詳細については、次を参照してくださいOData:。Inlinecount システム クエリ オプション ($inlinecount)します。For more information, see OData: Inlinecount System Query Option ($inlinecount).

リレーションシップのアドレス指定Addressing Relationships

エンティティ セットとエンティティのインスタンスのアドレス指定だけでなくODataODataエンティティ間のリレーションシップを表すアソシエーションをアドレスすることもできます。In addition to addressing entity sets and entity instances, ODataOData also enables you to address the associations that represent relationships between entities. この機能は、2 つのエンティティ インスタンス (Northwind サンプル データベースの注文に関連付けられた配送会社など) の間のリレーションシップを作成または変更するために必要です。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 サポート、$linkエンティティ間のアソシエーションをアドレスする演算子。supports a $link operator to specifically address the associations between entities. たとえば、次の URI を HTTP PUT 要求メッセージで指定した場合、指定した注文の配送会社を新しい配送会社に変更します。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  

詳細については、次を参照してくださいOData:。エントリ間のリンクをアドレス指定します。For more information, see OData: Addressing Links between Entries.

返されたフィードの使用Consuming the Returned Feed

URI、ODataODataリソースをサービスによって公開されるエンティティ データのアドレスが有効です。The URI of an ODataOData resource enables you to address entity data exposed by the service. Web ブラウザーのアドレス フィールドに URI を入力すると、ODataOData要求されたリソースのフィード表現が返されます。When you enter a URI into the address field of a Web browser, a ODataOData feed representation of the requested resource is returned. 詳細については、次を参照してください。、 WCF Data Services クイック スタートします。For more information, see the WCF Data Services Quickstart. Web ブラウザーは、データ サービス リソースが必要なデータを返します、アプリケーション コードによってアクセスできますも作成、更新、およびデータを削除する運用データ サービスのことをテストまたはスクリプト言語で Web ページは便利です。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. 詳細については、次を参照してください。クライアント アプリケーションでデータ サービスを使用してします。For more information, see Using a Data Service in a Client Application.

関連項目See also