[转]访问 OData 服务 (WCF Data Services)
本文转自: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)相关推荐
- 如何消费WCF Data Services定义的服务操作
Service Operations (WCF Data Services)描述了如何 自定义WCF Data Service的服务.客户端如何消费可以参考文章Service Operations a ...
- WCF Data Services服务端处理汇总
和可以在客户端直接使用的查询对应,在服务端也有很多可以增强的功能 Service Operations 自己发布一些业务逻辑的处理 Service operations enable you to e ...
- WCF Data Services 基础
把最近使用的WCF Data Service和WCF RIA Service的使用例子发布在站点http://dskit.codeplex.com , 本系列文章就把WCF Data Service和 ...
- 如何使用好android的可访问性服务(Accessibility Services)
原文:http://android.eoe.cn/topic/android_sdk * 主题* Manifest声明和权限 可访问性服务声明 可访问性服务配置 AccessibilityServic ...
- 【转】WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...
- 与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信
原文:与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信 [索引页] [源码下载] 与众不同 windows phone (29) - C ...
- 如何处理使用 SAP UI5 消费真实的 OData 服务时遇到的跨域问题
我本地开发了一个 SAP UI5 应用,消费真实的 OData 服务: https://services.odata.org/Northwind/Northwind.svc 会遇到跨域问题错误:COR ...
- WCF Data Service 创建OData服务
WCF Data Service 是需要 ORM 的支持的, 主流的 ORM 都已经支持 WCF Data Service 了, Entity Framework.Linq to SQL.ALinq ...
- 【转】WCF Data Service 使用小结 (一)—— 了解OData协议
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- 一键部署开箱即用的代理服务器,解决 SAP UI5 应用开发过程中访问远端 OData 服务的跨域问题试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
最新文章
- 皮一皮:到底谁才是渣王...
- 【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
- 【PHP】curl_init() 如何排错????
- 长期价值三重进阶,同程艺龙加速“破局”OTA
- 2018/Province_Java_C/2/猴子分香蕉
- 亚马逊 OpenJDK 发行版 Corretto GA
- 多线程写图像文件的一点小测试
- mysql 使用存储过程批量插数据
- Live Mesh - Synchronizing life
- 免驱 usb有线网卡_2020年末台式机amp;笔记本无线网卡最全选购指南amp;攻略,打造极致WIFI体验!...
- 两种excel 去掉公式保留数值的方法
- MQTT Qos详解(一)
- 秦小明 第六讲 投融资,资产运作
- 姓名:海宁(Justine Henin-Hardenne)
- 【Android】时钟动态图标的定制化
- 1.Unity之Shader新手入门
- 音乐微信小程序源码php版,仿QQ音乐的微信小程序
- 机器学习_深度学习毕设题目汇总——视网膜
- 拥有一台服务器后,我竟然这么酷?
- 汽车标志品牌查询介绍小程序源码
热门文章
- 8、饼图(ax.pie)
- windows环境下安装wget
- python传递参数*与**
- 基于机器学习的恶意网站/仿冒网站检测实战
- 关于python中的pow(1010、32)_关于Python中的??pow(1010,32),下列说法正确的是.
- android mmkv使用_锦囊篇|一文摸懂SharedPreferences和MMKV(一)
- 捕捉动物游戏java代码_Java Swing打猎射击游戏源码
- mysql的数学函数开方_MySQL数学函数简明总结
- JDK动态代理执行过程分析
- 你必须具有权限才能读取此对象_为啥手机APP要获取权限?这些权限不能随便同意...