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和重点关注的部分

时间: 2024-10-08 10:14:13

OData with List的相关文章

OData

http://scn.sap.com/docs/DOC-44986 Introduction OData services provide a uniform interface for interacting with their resources, and in addition are self-describing: The service document (located at the service root) lists the available top-level reso

对一个前端AngularJS,后端OData,ASP.NET Web API案例的理解

依然chsakell,他写了一篇前端AngularJS,后端OData,ASP.NET Web API的Demo,关于OData在ASP.NET Web API中的正删改查没有什么特别之处,但在前端调用API时,把各种调用使用$resouce封装在一个服务中的写法颇有借鉴意义. 文章:http://chsakell.com/2015/04/04/asp-net-web-api-feat-odata/源码:https://github.com/chsakell/odatawebapi 首先是领域模

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 API中使用OData

在ASP.NET Web API中使用OData 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在ASP.NET Web API中,对于CRUD(create, read, update, and delete)应用比传统WebAPI增加了很大的灵活性只要正确使用相关的协议,可以在同等情况下对一个CRUD应用可以节约很多开发时间,从而提高开发效率 二.怎么搭建 做一个简单的订单查询示例我们使用Code First模式创建两个实体对象Product(产品

OData.NET已在 GitHub上开源

OData.NET已在 GitHub上开源 微软最近已将OData .NET所有类库的源代码全部发布在GitHub上. 以下与OData相关的项目目前都已迁移到GitHub上: ODataLib EdmLib OData.NET客户端 The spatial library OData客户端代码生成器 Web API for OData RESTier C++ 服务端与客户端 Python客户端 OData4ObjC OData.NET项目目前在总共三个代码分支中进行维护:用于维护OData V

vs2012 + web api + OData + EF + MYsql

vs2012 + web api + OData + EF + MYsql 开发及部署 先说下我的情况,b/s开发这块已经很久没有搞了,什么web api .MVC.OData都只是听过,没有实际开发过,因为最近要开发一个手机app的服务端,所以准备用这套框架来开发. 下面开始进入正题(我尽量将自己开始写代码遇到的所有问题还原,以便以后提醒自己,文章是在我开发部署完毕后开始写的,所以有些地方有遗漏,还请见谅) 1:首先用vs2012新建一个“asp.net 空 web 应用程序”,(注意,我选择

WebApi学习笔记07:使用webapi核心文件模板 --创建OData端点

1.Web项目 1.1概述 前面介绍的EF访问和操作数据库,要OUT了(当然不是啦),这章使用OData(开源数据协议)…… 1.2创建项目 在“解决方案资源管理器”中右键,添加->新建解决方案文件夹,命名为:OData 右键“OData”逻辑文件夹,添加->新建项目: 1.3安装OData框架 1.4添加模型 在Models文件夹下,添加Product.cs,其代码: namespace ProductService.Models { public class Product { publi

Dynamics CRM OData 查询超过50条记录的数据(Retrieving More than 50 records using OData)

在通过ODdata方式获取CRM数据时,默认查询出来的results只有50条数据,可以通过JSON返回的Object中的"_next"属性作为URL循环获取直到该属性为空 示例代码如下: relatedAccounts = []; function onload() { var serverUrl = Xrm.Page.context.getServerUrl(); var oDataUri = serverUrl + "/xrmservices/2011/Organiza

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:952

Entity Framework OData filter inherit

过滤继承对象 TPH 的情况 EF : return Task.FromResult<IQueryable<Parent>>( query.OfType<ChildA>().Where(c => c.childA == "a").Cast<Parent>().Concat(query.OfType<ChildB>().Where(c => c.childB == "b")) ); 使用 conc