OData語法

 

 

 

 

 

1.基礎查詢sql

  1)列出全部的WagerInformations數據庫

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

  2)按照主鍵查詢url

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

     PS:在.net裏面通常使用DataServiceKeyAttribute標識主鍵.net

  3)獲取某個對象的一個成員orm

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

    獲取主鍵爲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

()

 

 

 

 

 

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 

相關文章
相關標籤/搜索