今天我们来看看Web API的数据查询功能,尽管之前介绍CRUD的文章里面提到过怎么去Read数据,可是并没有详细的去深究那些细节,今天我们就来详细看看吧。事实上呢,Web API的数据查询接口也是基于OData协议的,所以之前的OData Url Query的构造规则没有非常大的变化。比如:$top, $select, $filter, $expand, $order的功能还是在的,只是也加入了一些新东西,比如
$count -- 返回记录的总数
Paging Mechanism(分页机制)-- 来东西,如今,实现机制不一样了,基于HTTP报头设置页大小
Formatted Value(新东西。没有找到最新的文档) -- 目測和记录的格式化有关,只是没找到详细的Mapping文档
$count
$count非常好理解,返回记录在系统中的总数(和filter条件相关),假设不制定filter条件。则返回全部记录的总数。
Paging Mechanism
须要设置HTTP 报头:odata.maxpagesize=?,和之前的API不一样了
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: FangSong_GB2312;font-size:14px;" alt="" />
HttpRequestMessage retrieveAccReq = new HttpRequestMessage(HttpMethod.Get, webApiUrl + "/accounts?$select=name&$count=true"); retrieveAccReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
retrieveAccReq.Headers.Add("Prefer", "odata.maxpagesize=2");
string nextPageLink = string.Empty;
JObject result = null;
int pageIndex = 1;
HttpResponseMessage retrieveAccResp;
do
{
if (!string.IsNullOrWhiteSpace(nextPageLink))
{ retrieveAccReq = new HttpRequestMessage(HttpMethod.Get, nextPageLink);
retrieveAccReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
retrieveAccReq.Headers.Add("Prefer", "odata.maxpagesize=2");
} retrieveAccResp = await client.SendAsync(retrieveAccReq);
result = JsonConvert.DeserializeObject<JObject>(await retrieveAccResp.Content.ReadAsStringAsync());
Console.WriteLine("Page-" + pageIndex++);
Console.WriteLine(result.ToString());
if (retrieveAccResp.IsSuccessStatusCode)
{ if (result["@odata.nextLink"] != null && !string.IsNullOrWhiteSpace(result["@odata.nextLink"].Value<string>()))
{
nextPageLink = result["@odata.nextLink"].Value<string>();
}
else
{
nextPageLink = "";
} }
else
{
break;
} } while (!string.IsNullOrEmpty(nextPageLink));
Formatted Value
目測和返回记录的格式化有关,返回的记录更好理解,只是没找到详细的Formatted Mapping。建议不轻易使用。
HttpRequestMessage retrieveAccWithFormattedValueReq = new HttpRequestMessage(HttpMethod.Get, webApiUrl + "/accounts?$select=name,donotpostalmail,accountratingcode,numberofemployees,revenue&$top=1");
retrieveAccWithFormattedValueReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode);
retrieveAccWithFormattedValueReq.Headers.Add("Prefer", " odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\""); HttpResponseMessage retrieveAccWithFormatedValueResp = await client.SendAsync(retrieveAccWithFormattedValueReq); if (retrieveAccWithFormatedValueResp.IsSuccessStatusCode)
{
JObject result = JsonConvert.DeserializeObject<JObject>(await retrieveAccWithFormatedValueResp.Content.ReadAsStringAsync());
Console.WriteLine(result.ToString());
}
在Web API的数据查询里面呢,另一个比較重要的仅仅是就是使用Web API Query Function,博主将在兴许的博文中为大家介绍它的用法。
Dynamics CRM 2015/2016 Web API:新的数据查询方式的更多相关文章
-
Dynamics CRM 2015/2016 Web API:聚合查询
各位小伙伴们,今天是博主2016年发的第一篇文章.首先祝大家新年快乐.工资Double,哈哈.今天我们来看一个比較重要的Feature--使用Web API运行FetchXML查询! 对的,各位.你们 ...
-
Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function
今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比較的迷糊.这种命名确实是和之前的那套基于SOAP协议的API全然联系不上.好了,不说 ...
-
Dynamics CRM 2015/2016 Web API:Unbound Action 和 Bound Action
上篇文章介绍了Bound/Unbound Function.今天我们来看看Action吧.像我之前说的:Function和Action之前的差别能够简单理解为.Function不改动数据,可是Acti ...
-
Dynamics CRM 2015/2016 Web API:Unbound Custom Action 和 Bound Custom Action
今天我们再来看看Bound/Unbound Custom Action吧,什么是Custom Action?不知道的小伙伴们就out了,Dynamics CRM 2013就有了这个功能啦.和WhoAm ...
-
控制台程序(C#)不弹出登录窗口连接到Dynamics CRM Online的Web API
微软动态CRM专家罗勇 ,回复331或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 我之前的文章 控制台程序(C#)不弹出认证窗口连接到Dynami ...
-
Dynamics CRM 2015/2016新特性之三十二:新增乐观并发处理
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复215或者20160328可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
-
Dynamics CRM 2015/2016新特性之三十三:有了ExecuteTransactionRequest,再也不用担心部分成功部分失败了
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复216或者20160329可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
-
Dynamics CRM 2015/2016新特性之三十四:有了插件日志,调试插件so easy!
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复217或者20160330可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
-
Dynamics CRM 2015/2016新特性之七:有了文档模板,打印分析So Easy
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复190或者20160216可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 从CRM 2015 UR1开始, ...
随机推荐
-
jQuery post数据至ashx
今天给大家分享一个小功能,在jQuery环境中,Post data to ashx进行数据交互. 参考下面代码示例: $.ajax({ url: '<%= ResolveUrl("~/ ...
-
Android开发环境建立
一.For windows 7(注:XP会有问题) 1.JDK-Java SE download: http://www.oracle.com/technetwork/java/javase/down ...
-
C++虚函数、赋值兼容原则
#include <iostream.h> class A { public: void f1() { cout << "a" << endl; ...
-
Linux下STM32开发环境的搭建
目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...
-
uva live 4394 String painter 间隔dp
// uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...
-
spring + springmvc+ mybatis 事务管理及控制
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
-
洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】
题目分析: 裸题.怀疑$ O(n^4log{n}) $跑不过,考虑Edmonds-Karp优化. 代码: #include<bits/stdc++.h> using namespace s ...
-
向json中添加新的熟悉或对象 Add new attribute (element) to JSON object using JavaScript
How do I add new attribute (element) to JSON object using JavaScript? JSON stands for JavaScript Obj ...
-
人活着系列之开会(Floy)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2930 题意:所有点到Z点的最短距离.因为岛名由 ...
-
centos7.2启动级别
systemctl set-default multi-user.target 设定默认为字符界面,也就是3 systemctl set-default graphical.target ...