Dynamics CRM 2015/2016 Web API:新的数据查询方式

来源:互联网 发布:艾克里里の淘宝店 编辑:程序博客网 时间:2024/05/16 14:22

今天我们来看看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不一样了



 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,博主将在后续的博文中为大家介绍它的使用方法。




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁宝宝不盖被子怎么办 2岁宝宝不盖被子怎么办 买的芬琳漆不够刷的怎么办 1.3米宽厨房门怎么办 墙面漆颜色刷深了怎么办 地板上沾了墙漆怎么办 孩子连发高烧8天了怎么办 孩子对数字不敏感怎么办 三岁宝宝不爱学习怎么办 5岁还不认识数字怎么办 小孩上中班还不认识数字怎么办 中班小孩数字都不认识怎么办 中班小孩记不住数字怎么办 中班小孩不肯练数字描红怎么办 2个月吃母乳婴儿缺钙怎么办 月经期接吻水多怎么办 4岁宝宝晚上尿多怎么办 2岁宝宝晚上尿多怎么办 3岁宝宝晚上尿多怎么办 宝宝拉肚子拉绿色的屎怎么办 婴儿吃奶粉大便干燥怎么办 母乳宝宝不拉大便怎么办 我儿子8岁拉肚子怎么办 1岁宝宝经常便秘怎么办 两个月宝宝拉水怎么办 宝宝吃奶粉上火便秘怎么办 20多天的宝宝便秘怎么办 宝宝五十天消化不良不拉屎怎么办 一周七个月宝宝消化不良拉屎怎么办 孩子总是消化不良拉屎不成型怎么办 一岁宝宝长牙慢怎么办 一岁宝宝不喝水怎么办 七个月的宝宝咳嗽怎么办 怀孕七个月感冒了怎么办 苹果汁弄到白色衣服怎么办 宝宝大便干燥拉不出来怎么办 婴儿吃过青菜米粉呕吐怎么办 50天宝宝便秘5天怎么办 8个月婴幼儿便秘怎么办 1个月婴幼儿便秘怎么办 榨汁后的苹果渣怎么办