OData语法

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

时间: 2024-10-12 11:25:42

OData语法的相关文章

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

前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文的示例代码的下载地址为http://pan.baidu.com/s/1o6lqXN8 大多数的数据集定义实体间的关系:客户有订单.书籍有作者.产品有供应商.客户端可以使用OData操作实体间的关系.给定一个产品,你可以找到该产品的供应商.您也可以创建或者删除关系.例如,您也可以为一个产品设置一个供应商. 本教程将会展示

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

网上百度“odata 语法”会出来很多结果,其中有一项是比较一致的,那就是odata支持一下几种语法: $filter  条件表达式 -- 对应sql语句的where条件查询,如:/Categories?$filter=name eq 'liumang' $expand 包含属性和关系 -- 对应表的外键关系,如:/Categories?$expand=Products $select 查询字段的列表 -- 对应sql语句select后面的字段,如:/Categories?$select=id,

XenApp/XenDesktop监控数据查询、提取

在XenDesktop中,Director为管理员提供了整个平台的监控和健康状态的信息,让管理员方便的了解Citrix的平台的运行状态以及实时发生的故障.这些监控数据从哪儿来?在XenDesktop的先前版本中,Director中的大多数数据都是通过直接访问Broker Service API来检索的.使用此API的缺点是此服务不包括对使用的历史信息的检索,即只能检索实时会话信息.如果管理员需要向以前的监控组件Edgesight那样检索历史数据,比如管理员可能想知道目前有多少会话处于活动状态,以

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

接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM框架实现 EF功能最强的ORM EF与EFCore缺陷 ORM框架工作原理 所有的ORM框架的工作原理都离不开下面这张图,只是每个框架的实现程度不同但是最终的目的是相同的. 如果是一个ORM框架那么一定会有上图中蓝色部分的这几个元素,无论是增删改查对于ORM一定是以对象为起点,使用对象构造出LINQ

Azure Application Insights REST API使用教程

本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具. 新加入的team中的一项工作是制作日常的运维报表,制作方式是手工前往portal.azure.com,在网页中多次执行不同的查询语句.导出excel,之后再人工进行合并.分组.汇总.分析等等.这是一个繁琐的过程,其中大部分步骤其实不值得花费人工,应该交给程序.为了自动化这一过程,降低报表的制作成本,我尝试使用了Azure Application Insi

ASP.NET Web API基于OData的增删改查,以及处理实体间关系

本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public string Category { get; set; } [ForeignKey("Sup

[水煮 ASP.NET Web API2 方法论](12-1)创建 OData

问题 怎样用在 Web API 中创建 OData 服务. 解决方案 对于我们来说,在 Web API 中使用 OData最简单的方式就是使用 ASP.NET 模板来创建Odata Controller.在 Controllers 文件夹上鼠标右键->添加->新建项. 显示一个如图 12-1 的对话框,在这里我们可以选择两个 "Web API 2 OData" 相关的模板.Vistual Studio 将会生成相关的 OData Controller,同时,从 NuGet

AngularJS使用OData请求ASP.NET Web API资源的思路

本篇整理AngularJS使用OData请求ASP.NET Web API资源的思路. 首先给ASP.NET Web API插上OData的翅膀,通过NuGet安装OData. 然后,给controller中需要使用OData的Action加上EnableQuery特性,并让Action方法返回IQueryable<T>类型. public class ProductsController : ApiController { // GET: api/Products [EnableQuery(

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50