本文转自: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)。

转载于:https://www.cnblogs.com/freeliver54/p/3953787.html

[转]访问 OData 服务 (WCF Data Services)相关推荐

  1. 如何消费WCF Data Services定义的服务操作

    Service Operations (WCF Data Services)描述了如何 自定义WCF Data Service的服务.客户端如何消费可以参考文章Service Operations a ...

  2. WCF Data Services服务端处理汇总

    和可以在客户端直接使用的查询对应,在服务端也有很多可以增强的功能 Service Operations 自己发布一些业务逻辑的处理 Service operations enable you to e ...

  3. WCF Data Services 基础

    把最近使用的WCF Data Service和WCF RIA Service的使用例子发布在站点http://dskit.codeplex.com , 本系列文章就把WCF Data Service和 ...

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

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

  5. 【转】WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务

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

  6. 与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信

    原文:与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信 [索引页] [源码下载] 与众不同 windows phone (29) - C ...

  7. 如何处理使用 SAP UI5 消费真实的 OData 服务时遇到的跨域问题

    我本地开发了一个 SAP UI5 应用,消费真实的 OData 服务: https://services.odata.org/Northwind/Northwind.svc 会遇到跨域问题错误:COR ...

  8. WCF Data Service 创建OData服务

    WCF Data Service 是需要 ORM 的支持的, 主流的 ORM 都已经支持 WCF Data Service 了, Entity Framework.Linq to SQL.ALinq  ...

  9. 【转】WCF Data Service 使用小结 (一)—— 了解OData协议

    最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...

  10. 一键部署开箱即用的代理服务器,解决 SAP UI5 应用开发过程中访问远端 OData 服务的跨域问题试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

最新文章

  1. 皮一皮:到底谁才是渣王...
  2. 【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
  3. 【PHP】curl_init() 如何排错????
  4. 长期价值三重进阶,同程艺龙加速“破局”OTA
  5. 2018/Province_Java_C/2/猴子分香蕉
  6. 亚马逊 OpenJDK 发行版 Corretto GA
  7. 多线程写图像文件的一点小测试
  8. mysql 使用存储过程批量插数据
  9. Live Mesh - Synchronizing life
  10. 免驱 usb有线网卡_2020年末台式机amp;笔记本无线网卡最全选购指南amp;攻略,打造极致WIFI体验!...
  11. 两种excel 去掉公式保留数值的方法
  12. MQTT Qos详解(一)
  13. 秦小明 第六讲 投融资,资产运作
  14. 姓名:海宁(Justine Henin-Hardenne)
  15. 【Android】时钟动态图标的定制化
  16. 1.Unity之Shader新手入门
  17. 音乐微信小程序源码php版,仿QQ音乐的微信小程序
  18. 机器学习_深度学习毕设题目汇总——视网膜
  19. 拥有一台服务器后,我竟然这么酷?
  20. 汽车标志品牌查询介绍小程序源码

热门文章

  1. 8、饼图(ax.pie)
  2. windows环境下安装wget
  3. python传递参数*与**
  4. 基于机器学习的恶意网站/仿冒网站检测实战
  5. 关于python中的pow(1010、32)_关于Python中的??pow(1010,32),下列说法正确的是.
  6. android mmkv使用_锦囊篇|一文摸懂SharedPreferences和MMKV(一)
  7. 捕捉动物游戏java代码_Java Swing打猎射击游戏源码
  8. mysql的数学函数开方_MySQL数学函数简明总结
  9. JDK动态代理执行过程分析
  10. 你必须具有权限才能读取此对象_为啥手机APP要获取权限?这些权限不能随便同意...