OData 1-4 OData语法(上)

如果眼下提供OData的服务地址是

http://localhost:9527/ODataService.svc

提供的服务内容例如以下所看到的 (提供了一个WagerInformations)

<?

xml version="1.0" encoding="utf-8" standalone="yes" ?

>

<service xml:base="http://localhost:9527/ODataService.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">

<workspace>

<atom:title>Default</atom:title>

<collection href="WagerInformations">

<atom:title>WagerInformations</atom:title>

</collection>

</workspace>

</service>

1.基础查询

  1)列出全部的WagerInformations

    http://localhost:9527/ODataService.svc/WagerInformations

  2)依照主键查询

    http://localhost:9527/ODataService.svc/WagerInformations(1)

    PS:在.net里面一般使用DataServiceKeyAttribute标识主键

  3)获取某个对象的一个成员

    http://localhost:9527/ODataService.svc/WagerInformations(1)/EventName

    获取主键为1的WagerInformations的EventName属性

  4)假设这个属性还有属性 那么依此类推

    http://localhost:9527/ODataService.svc/WagerInformations(1)/Event/EventDateTime

    另外不要试图获取原始类型的一些属性 - -# 比如返回 String的Length属性

  5) $value 方案3返回对象的一个成员用的是Xml的数据格式.实际上我们非常多时候不须要那么多的标签,仅仅想拿返回值

    那么使用url http://localhost:9527/ODataService.svc/WagerInformations(1)/EventName/$value

    方案3的数据 <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <EventName xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices">test 1</EventName>

    方案5的数据 test 1

  6) $filter  条件表达式

    查询EventName 等于 "test 1" 的表达式例如以下

    http://localhost:9527/ODataService.svc/WagerInformations?$filter=EventName  eq 'test 1'

    查询时间:

    

$filter=EventDateTime" style="background-color:inherit; color:rgb(29,88,209)">http://localhost:9527/ODataService.svc/WagerInformations?$filter=EventDateTime eq DateTime'2010-12-21T10:10:19.390625'

    组合查询表达式: and操作

    http://localhost:9527/ODataService.svc/WagerInformations?$filter=(EventDateTime eq DateTime'2010-12-21T10:10:19.390625'
) and (BusinessUnitCode eq '2')

  

下面是运算符列表 

Operator

Description

C#         equivalent

eq

equals

==

ne

not equal

!=

gt

greater than

>

ge

greater than or equal

>=

lt

less than

<

le

less than or equal

<=

and

and

&&

or

or

||

()

grouping

()

OData 1-5 OData语法(下)


7) $expand 包括属性和关系

  如果的WagerInformation拥有一个属性 UserInformation User 表示用户信息,  还有一个属性 IEnumerable<CommonInformation> Commons 表示评论信息

  使用 http://localhost:9527/ODataService.svc/WagerInformations?$expand=User ,Commons

  返回的信息中就会包括相关类 (用于主外键关系)

  - -# 假设不手动指定 而是自己主动关联....那就悲剧了 可能数据库中的全部表都有联系...然后把整个数据库返回.....

  曾经做过非常囧的事情.就是开了级联删除...然后删除了一个非常主要的配置项.....整个数据库基本空了

8) $select 查询字段的列表(和sql中select后面的表达式一样)

  下面url仅仅想返回查询全部信息的EventName属性

  

$select=EventName" style="background-color:inherit; color:rgb(29,88,209)">http://localhost:9527/ODataService.svc/WagerInformations?

$select=EventName  

  假设WagerInformation有一个User属性 其包括一个UserName那么查询username的url例如以下

  http://localhost:9527/ODataService.svc/WagerInformations?$select=User/UserName

9) $count 查询数量

  http://localhost:9527/ODataService.svc/WagerInformations/$count

  返回的是真实数据不包括不论什么修饰 (raw data) 传回的http body中就仅仅有一个 "5"  (不包括引號)

10) $orderby  排序

  下面表达式依照BusinessUnitCode 降序 ,然后 EventName 升序排列

   http://localhost:9527/ODataService.svc/WagerInformations?

$orderby=BusinessUnitCode desc,EventName asc

11) $top

  在10的基础上 假设我仅仅想返回第一条数据 那么例如以下

  http://localhost:9527/ODataService.svc/WagerInformations?

$orderby=BusinessUnitCode desc,EventName asc&$top=1

  这里依旧还是用& 来分隔不同的表达式

12) $skip

  这东西一般和$top配合来分页

  下面表达式跳过第一条, 然后返回最多10条数据

  http://localhost:9527/ODataService.svc/WagerInformations?$top=10&$skip=1

13) $inlinecount

  在分页取数据的时候,常常要同一时候统计总记录数

  下面表达式在返回分页数据的同一时候,顺便同一时候返回全部的记录数

  http://localhost:9527/ODataService.svc/WagerInformations?

$top=2&$skip=2&$inlinecount=allpages

  假设表达式中有$filter  条件表达式 ,那么返回的就是符合条件的全部数据的数量

  http://localhost:9527/ODataService.svc/WagerInformations?$filter=BusinessUnitCode eq '1'&$inlinecount=allpages

14) $skiptoken

  比如游标或者书签的一个东西

15)$links

  获取相关实体的url 

  http://localhost:9527/ODataService.svc/WagerInformations(1)/$links/User

16)$metadata

  显示元数据

  http://localhost:9527/ODataService.svc/$metadata

200(OK)

202(Accepted)

204(No Content)

400(Bad Request)

404(Not Found)

405(Method Not Supported)

412(Precondition Failed)

500(Internal Server Error)

版权声明:本文博客原创文章。博客,未经同意,不得转载。

OData语法的更多相关文章

  1. Dynamics 365 We API ODATA语法根据父记录查询子记录,根据子记录查询父记录(附上根据团队,队列名称查成员)

    微软动态CRM专家罗勇 ,回复333或者20190508可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 先举个N:N关系的例子.这里以根据团队的名称查找其所有团队成员的 ...

  2. Asp.Net Web API 2第十八课——Working with Entity Relations in OData

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文的示例代码的下载地址 ...

  3. mvc api odata 查询选项之 $inlinecount ,$format 选项

    网上百度“odata 语法”会出来很多结果,其中有一项是比较一致的,那就是odata支持一下几种语法: $filter  条件表达式 -- 对应sql语句的where条件查询,如:/Categorie ...

  4. Working with Entity Relations in OData

    Working with Entity Relations in OData 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs. ...

  5. mvc api odata查询选项之 $inlinecount $format 选项(转)

    出处:http://www.it165.net/pro/html/201505/40236.html 网上百度“odata 语法”会出来很多结果,其中有一项是比较一致的,那就是odata支持一下几种语 ...

  6. Asp.Net Web API 2

    Asp.Net Web API 2第十八课——Working with Entity Relations in OData   前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导 ...

  7. Mego(2) - NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...

  8. Dynamics CRM日期字段查询使用时分秒的方法

    本人微信公众号:微软动态CRM专家罗勇 ,回复293或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 我们 ...

  9. Azure Application Insights REST API使用教程

    本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具. 新加入的team中的一项工作是制作日常的运维报表,制作方 ...

随机推荐

  1. telnet发电子邮件

    无聊今天的工作,想想一个学生被提到最后一次telnet发电子邮件,所以我想试试.最后,成功的实践,这里做个总结. 首先,cmd进telnet打开回话: 下面红色字体为命令. 1.open smtp.1 ...

  2. Storm基础知识

    上一篇文章我们介绍一个简单的Storm起源,今天我去学习Storm一些主要的知识,他的基本使用基本的了解.幸运的是,,不是太困难,假设我们理解Hadoop的MapReduce模型的话.看这个也是很类似 ...

  3. 摆弄【Nhibernate 协会制图--导乐陪伴分娩】

    现有两个实体,Dog和 Master,映射到数据库表中如上图所看到的.一个Dog仅仅同意相应一个Master,但一个Master能够有多个Dog.我们在查询Dog的时候.往往还须要知道其主人Maste ...

  4. grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)(转)

    这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解 ...

  5. Canvas rontate(旋转) 使用误区

    context.setTransform(1,0,0,1,0,0);//重置转换为初始化状态 var angleInRadians = 45 * Math.PI / 180;var width = 4 ...

  6. 它们的定义TextView使之具有跑马灯的效果

    一.引入问题 使用通用textview快乐效应,焦点事件不启动滚动,button目前的焦点事件,但丑,因此,需要定制TextView 天生焦点 个textview FocusedTextView.ja ...

  7. href=&quot;javascript:void(0);&quot;与#差异

    将<a>标签设置为空链接有两种方式.第一个是href="#",第二个是href="javascript:void(0);". 两种方式都设置了标签为 ...

  8. lodoop打印控制具体解释

    注意:这就需要引进的打印控制(我上传Demo同时): install_lodop32.exe install_lodop64.exe LodopFuncs.js jquery-1.10.0.min.j ...

  9. UVA714- Copying Books(最大最小化)

    意甲冠军:k手稿的部分成m部分,使每一个和最小 思路:典型最大值最小化问题,使用贪心+二分. 贪心的是每次尽量将元素往右边划分,二分查找最小的x满足m个连续的子序列和S(i)都不超过x. 由于输出的原 ...

  10. Androids含文档erver结束(工具包 Httputils)两

    在同server在...的基础上,本文client还登录界面 Andriod简单http get请求基础上,用户注冊后跳转到下载界面,本文下载界面仅仅有两个View,一个是textView显示注冊后u ...