重点关注之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中也可以 ...
随机推荐
- ubuntu 安装JDK
下载JDK6安装包,我的为32位系统所以选择jdk-6u35-linux-i586.bin 下载地址:http://www.oracle.com/technetwork/java/javase/dow ...
- ACDC
acdc dcdc电源模块中大功率一般都是开关电源模式的,所以一般输入都是一个较宽的电源范围,体积也相对于变压器要小一些,效率高一些,但是纹波会偏大一些,如何选择就要看电路的需求来选择相应的方案
- iOS - OC NSNumber 数字
前言 @interface NSNumber : NSValue @interface NSDecimalNumber : NSNumber 将基本数据类型包装成 OC 对象 1.NSNumber 与 ...
- THE SENSE OF BEAUTY
#include<stdio.h> int main() { ][] = { " ,.:;j", " ,: i. .,:;ff", " : ...
- mysql 并发控制
1.多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题.2.mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁.也就是说,读锁是共享的,写锁是排他的.3. ...
- Scala的Actor模式 & Akka框架
今天学Spark的时候,看到Scala的actor模式是一个加分点.所以搜了一下,看了.主要参考下面两篇文章,还没有实验,有些地方领会的不深刻: http://nxlhero.blog.51cto.c ...
- android实现系统电话通话过程中自动感应黑屏
package com.developmenttools.customui.activity; import java.util.HashSet;import java.util.Set; impor ...
- HttpURLConnection请求接口
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; ...
- 工作流学习——Activiti整体认识二步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46594505 ***************************************** ...
- HashMap循环遍历方式及其性能对比(zhuan)
http://www.trinea.cn/android/hashmap-loop-performance/ ********************************************* ...