重点关注之OData with List
OData是什么
官方解释:The Open Data Protocol (OData) is a data access protocol for the web. OData provides a uniform way to query and manipulate data sets through CRUD operations (create, read, update, and delete).
开始使用OData
要想使用OData,还有以下工作要做。
a.安装OData的程序包。可以通过NuGet程序包管理器安装,安装命令:Install-Package Microsoft.AspNet.Odata
b.配置OData EndPoint。在WebApiConfig的Register方法中注册OData路由和创建EDM,代码如下图。
c.创建OData Controller和Action,代码如下图。
现在可以访问下面两个url看看效果。
http://localhost.dev.wingontravel.com/HWAODataSite/opi?$metadata
,查看元数据,如下图
http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$select=CityName,CityEnglishName ,查询CityName和CityEngLishName,多个字段用,号分隔,如下图。
查询
先来看一下OData支持哪些查询选项,汇总如下图,然后来分别说明和演示。
①$select,一般用来返回指定的字段,如url:http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$select=CityName,CityEnglishName
②$filter,一般用于过滤结果。如下面例子。
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$filter=CityCode eq ‘TSN’,过滤CityCode=“TSN”
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$filter=CityID lt 5,过滤CityID<5
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$filter=CityID ge 5,过滤CityID>5
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$filter=substringof(‘T’,CityCode),过滤CityCode包含”T”的,报错’ An unknown function with name 'substringof' was found’,还不知道为什么。
重要:要使用filter功能,必须激活它。如下代码。
③$skip和$top,一般用于分页。
•$skip和$top基于客户端分页,比如url:http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$top=5&$skip=5
•[PageSize]属性,服务端分页,如下代码,限制接口一次只能返回10条记录。
④$orderby,排序。比如
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$orderby= CityID desc,按CityID降序排
•http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$orderby= CityCode,CityID desc,组合排序
重要:要使用orderby,需要激活。如下代码。
3.1 一个综合查询的例子
需求:查询CityID<16,取第二页(每页5条数据),按CityID降序排序,并且只返回CityName+CityEnglishName两个字段的城市信息。
Url:
http://localhost.dev.wingontravel.com/HWAODataSite/opi/Citys?$filter=CityID lt 16&$top=5&$skip=5&$orderby=CityID desc&$select=CityName,CityEnglishName
注意:这个url放在fiddler中需要encode
OData V4特性路由
OData v4的特性路由类似于WebApi 2的特性路由,可以向Controller添加ODataRoutePrefix和向Action添加ODataRoute特性,它们都是在命名空间System.Web.OData.Routing下,而WebApi 2的特性路由在命名空间System.Web.Http下。如下代码。
附:以上Demo已经放到GitHub上了。
1.https://github.com/mcgrady525/HelloWebAPI ,路由,序列化和模型绑定
2.https://github.com/mcgrady525/HelloWebAPI.OData ,OData和重点关注的部分
重点关注之OData with List的更多相关文章
- Web API系列
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务. ASP.NET Web API 是一种用于在 .NET Framework 上构 ...
- ASP.NET WebApi系列
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务. ASP.NET Web API 是一种用于在 .NET Framework 上构 ...
- ABP框架 - OData 集成
文档目录 本节内容: 简介 安装 安装Nuget包 设置模块依赖 配置你的实体 创建控制器 示例 获取实体列表 请求 响应 获取单个实体 请求 响应 获取单个实体及导航属性 请求 响应 查询 请求 响 ...
- ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- OData Client Code Generator
转发. [Tutorial & Sample] How to use OData Client Code Generator to generate client-side proxy cla ...
- Microsoft Dynamics CRM 2013 Js Odata 查询
实现功能: 在新建记录时,(大区,省区,城市)的值默认为当前用户的值.tips:字段均为lookup类型; function Default_region(){ var fromtype=Xrm. ...
- 让OData和NHibernate结合进行动态查询
OData是一个非常灵活的RESTful API,如果要做出强大的查询API,那么OData就强烈推荐了.http://www.odata.org/ OData的特点就是可以根据传入参数动态生成Ent ...
- Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...
- ABP理论学习之OData集成(新增)
返回总目录 本篇目录 介绍 安装 创建控制器 例子 样例项目 介绍 OData在其官网的定义是: 允许以一种 简单且标准的方式创建和使用可查询的.可互操作的RESTful APIs. 在ABP中也可以 ...
随机推荐
- SQL Server 临时表 Vs 表变量
开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点.这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和 ...
- v9 推荐位 排序问题解决办法
原网站:http://bbs.phpcms.cn/thread-879943-1-1.html 简介: 用phpcms做网站的时候,有些地方要用到推荐位列表,如幻灯片,特别推荐等.有时候因为文章的重要 ...
- Java I/O NIO学习
给出一个学习的链接讲的很全.. http://ifeve.com/java-nio-all/ 上边的是中文翻译的这里是原地址:http://tutorials.jenkov.com/java-nio/ ...
- iOS - UIGestureRecognizer
前言 NS_CLASS_AVAILABLE_IOS(3_2) @interface UIGestureRecognizer : NSObject @available(iOS 3.2, *) publ ...
- poj3565Ants(KM-几何与图论的结合)
链接 可以看出蓝的之和一定比红的之和要大,也就是说符合条件的匹配一定是权值最小的,所以二分图的最佳完美匹配..KM #include <iostream> #include<cstd ...
- golang 资源
1.Learning Go <学习Go语言> http://www.miek.nl/projects/learninggo/中文版http://mikespook.com/learning ...
- golang 定时器
上网查了下相关资料,基本上都介绍的是github.com\robfig\cron这个包来执行定时任务,试了下确实可以执行.但是此包下没有删 除任务的方法,只有暂停的方法(Stop),若要停止之前的任务 ...
- MySQL 定时器EVENT学习
原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...
- CSS重置代码和常用公共代码
发的发生的发生法士大夫撒打发士大夫
- org.apache.hadoop.hbase.TableExistsException: hbase:namespace
Problem is here : https://community.cloudera.com/t5/Storage-Random-Access-HDFS/HMaster-not-starting- ...