码迷,mamicode.com
首页 > 其他好文 > 详细

OData语法

时间:2014-06-15 17:54:51      阅读:1511      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   code   http   tar   

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‘

    查询时间:

    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属性

  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语法,布布扣,bubuko.com

OData语法

标签:des   style   blog   code   http   tar   

原文地址:http://blog.csdn.net/jason_wang1989/article/details/30485827

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!