本文转自:http://msdn.microsoft.com/zh-SG/library/dd728283(v=vs.103)

WCF 数据服务 支持开放式数据协议 (OData) 将数据作为包含可通过 URI 进行寻址的资源的源进行公开。              这些资源按照Entity Data Model的实体关系惯例表示。 在此模型中,实体表示作为应用程序域中数据类型的数据操作单元,如客户、订单、项目和产品。 可以通过使用具象状态传输 (REST) 的语义(尤其是标准 HTTP 谓词 GET、PUT、POST 和 DELETE)访问和更改实体数据。

对资源进行寻址


              

在 OData 中,您可以通过使用 URI 对数据模型公开的任何数据进行寻址。               例如,下面的 URI 返回一个作为 Customers 实体集的源,该实体集中包含 Customer 实体类型的所有实例的项:

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

实体具有称为实体键的特殊属性。 实体键用于在实体集中唯一标识某个实体。 这样,您可以在实体集中对某种实体类型的特定实例进行寻址。 例如,下面的 URI 返回 Customer 实体类型的具有键值 ALFKI 的特定实例的项:

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

也可以对实体实例的基元属性和复杂属性进行单独寻址。 例如,下面的 URI 返回一个包含特定客户的 ContactName 属性值的 XML 元素:

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

如果在上面的 URI 中包括 $value 终结点,则只在响应消息中返回基元属性的值。 下面的示例只返回字符串“Maria Anders”,而不返回 XML 元素:

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

实体之间的关系在数据模型中由关联定义。 通过这些关联,可以使用实体实例的导航属性对相关实体进行寻址。 对于多对一的关系,导航属性可返回单个相关实体;对于一对多的关系,导航属性可返回一组相关实体。 例如,下面的 URI 返回一个作为与特定客户相关的所有订单集的源:

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

通常为双向的关系由一对导航属性表示。 作为对前一示例中所示的关系的反转,下面的 URI 返回对特定 Order 实体所属的 Customer 实体的引用:

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

通过 OData,还可以基于查询表达式的结果进行资源寻址。 这样,可以基于计算的表达式对资源集进行筛选。 例如,下面的 URI 对资源进行筛选以仅返回指定客户自 1997 年 9 月 22 日起已发货的订单:

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

有关更多信息,请参见 OData:URI 约定(可能为英文网页)。

系统查询选项


              

OData 定义了一组系统查询选项,您可以使用这些选项对资源执行传统的查询操作,如筛选、排序和分页。               例如,下面的 URI 返回邮政编码尾号不是 100 的所有 Order 实体集和相关的 Order_Detail 实体:

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

返回源中的各项还按订单的 ShipCity 属性值进行排序。

WCF 数据服务支持下列 OData 系统查询选项:

 

查询选项

说明

$orderby

定义用于返回的源中的实体的默认排序顺序。 下面的查询按市/县对返回的客户源进行排序:

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

有关更多信息,请参见 OData: OrderBy 系统查询选项 ($orderby)(可能为英文网页)。

$top

指定要包括在返回的源中的实体数。 下面的示例跳过前 10 个客户,然后返回接下来的 10 个客户:

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

有关更多信息,请参见 OData:Top 系统查询选项 ($top)(可能为英文网页)。

$skip

指定开始在源中返回实体前要跳过的实体数。 下面的示例跳过前 10 个客户,然后返回接下来的 10 个客户:

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

有关更多信息,请参见 OData:Skip 系统查询选项 ($skip)(可能为英文网页)。

$filter

定义一个基于特定条件对源中返回的实体进行筛选的表达式。 此查询选项支持一组用于计算筛选表达式的逻辑比较运算符、算术运算符和预定义查询函数。 下面示例返回邮政编码尾号不是 100 的所有订单:

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

有关更多信息,请参见 OData:Filter 系统查询选项 ($filter)(可能为英文网页)。

$expand

指定由查询返回哪些相关实体。 相关实体将作为源或内联项与查询返回的实体包含在一起。 下面的示例返回客户“ALFKI”的订单以及每个订单的项目详细信息:

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

有关更多信息,请参见 OData:Expand 系统查询选项 ($expand)(可能为英文网页)。

$select

指定一个投影,用于定义在投影中返回的实体的属性。 默认情况下,在源中返回实体的所有属性。 下面的查询仅返回 Customer 实体的三个属性:

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

有关更多信息,请参见 OData:Select 系统查询选项 ($select)(可能为英文网页)。

$inlinecount

请求在源中包括源中返回的实体数的计数。 有关更多信息,请参见 OData: Inlinecount 系统查询选项 ($inlinecount)(可能为英文网页)。

对关系进行寻址


              

除了对实体集和实体实例进行寻址之外,通过 OData 还可对表示实体间关系的关联进行寻址。               若要创建或更改两个实体实例(例如与 Northwind 示例数据库中指定订单相关的发货方)之间的关系,必须使用此功能。 OData 支持 $link 运算符,专用于对实体间的关联进行寻址。 例如,在 HTTP PUT 请求消息中指定下面的 URI 可将指定订单的发货方更改为新发货方。

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

有关更多信息,请参见 OData:对各项之间的链接进行寻址(可能为英文网页)。

使用返回的源


              

使用 OData 资源的 URI 可以对该服务公开的实体数据进行寻址。               在 Web 浏览器的地址字段中输入 URI 时,将以 OData 源表示形式返回请求的资源。 有关更多信息,请参见 WCF 数据服务快速入门。 尽管可以使用 Web 浏览器测试某个数据服务资源能否返回预期的数据,但是生产数据服务(这些服务也可创建、更新和删除数据)通常由应用程序代码或网页中的脚本编写语言访问。 有关更多信息,请参见在客户端应用程序中使用 OData 服务 (WCF Data Services)

[转]访问 OData 服务 (WCF Data Services)的更多相关文章

  1. [转]Consuming a OData Service in a Client Application (WCF Data Services)

    本文转自:https://msdn.microsoft.com/zh-tw/library/dd728282(v=vs.103).aspx WCF Data Services 5.0   其他版本   ...

  2. 为 Oracle Database 开发 WCF Data Services 和 OData 应用程序

    为 Oracle Database 开发 WCF Data Services 和 OData 应用程序 本教程包含以下部分:   目的   所需时间   概述   先决条件   创建新的网站项目   ...

  3. [转]WCF Data Services OData

    http://martinwilley.com/net/data/wcfds.html WCF Data Services About OData Server code Client For .ne ...

  4. WCF Data Services 5.0 for OData V3

    https://www.microsoft.com/en-us/download/details.aspx?id=29306 VS 2010 下 安装 WCF Data Services 5.0 en ...

  5. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  6. 如何使用好android的可访问性服务(Accessibility Services)

    原文:http://android.eoe.cn/topic/android_sdk * 主题* Manifest声明和权限 可访问性服务声明 可访问性服务配置 AccessibilityServic ...

  7. WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务

    在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...

  8. 使用WCF Data Service 创建OData服务

    使用WCF Data Service 创建OData服务 在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主 ...

  9. 【2016-10-26】【坚持学习】【Day13】【WCF】【EF + Data Services】

    今天做了一个demo, EF+Data Services 先建立一个网站项目 添加一个ADO.NET 数据模型 相当于一个EF容器,用来连接MSSQL数据库 添加一个WCF Data Services ...

随机推荐

  1. Android进程绝杀技--forceStop(转)

    一.概述 1.1 引言 话说Android开源系统拥有着App不计其数,百家争鸣,都想在这“大争之世”寻得系统存活的一席之地.然则系统资源有限,如若都割据为王,再强劲的CPU也会忙不过来,再庞大的内存 ...

  2. Linux经常使用命令(更新中)

    文件类: 1.创建目录:mkdir 例:sudo mkdir test 2.创建空文件:touch 例:sudo touch test.txt 3.删除文件:rm 删除文件不须要确认:rm -f 例: ...

  3. nagios 安装配置(包含nrpe端)全 (三)

    四.系统的配置: 1.介绍 在配置过程中涉及到的几个定义有:主机.主机组,服务.服务组.联系人.联系人组,监控时间.监控命令等. 最重要的有四点: 第一:定义监控哪些主机.主机组.服务和服务组: 第二 ...

  4. 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)

    首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...

  5. 在matlab中生成m序列

    实验环境为matlab2013b 1.首先编写一个mseq.m文件,内容为: function[mseq]=m_sequence(fbconnection)  n=length(fbconnectio ...

  6. rocketmq消费队列代码

    DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(Constant.operationLogGroup); try { consum ...

  7. Android开发之自己定义Spinner样式的效果实现(源码实现)

    android系统自带的Spinner样式是远远满足不了我们实际开发过程中对Spinner UI风格的要求,因此我们肯定须要为了切合整个应用的风格,改动我们的Spinner样式.系统给我们提供了两种常 ...

  8. SpringBoot项目报错Cannot determine embedded database driver class for database type NONE

    原因: Cannot determine embedded database driver class for database type NONE 这是因为spring boot默认会加载org.s ...

  9. struts2 Action获取表单数据

    1.通过属性驱动式 1.首先设置 表单中的数据的name值 如:<input type="text" name="username" value=&quo ...

  10. Hadoop Hive概念学习系列之hive里的索引(十三)

    Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要 ...