Dynamics 365 CE中使用FetchXML进行聚合运算
微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
Dynamics 365 Customer Engagement可以通过使用FetchXML执行如下的聚合运算,如果你还只知道循环记录来计算的话你就OUT了,当然一次参与计算的记录默认不能超过5万行,若超过的话会报错。
- sum (求和)
- avg (求平均值)
- min (求最小值)
- max (求最大值)
- count(*) (记录计数)
- count(attribute name) (字段计数)
下面这个代码是一个例子,根据其关联的父记录,获取父记录的主属性的值,在后面加上序号来作为子记录主字段的值:
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.ServiceModel; namespace Plugins
{
public class PreLuoYontDemoEntityCreate : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity currentEntity = (Entity)context.InputParameters["Target"];
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
try
{
int detailsCount = ;
var returnRequestEF = currentEntity.GetAttributeValue<EntityReference>("new_returnrequest");
if(returnRequestEF == null)
{
throw new InvalidPluginExecutionException("Field - Return Request is required!");
}
string LuoYontDemoEntity_count = string.Format(@"<fetch aggregate='true' mapping='logical' distinct='false'>
<entity name='new_luoyongdemoentity'>
<attribute name='new_luoyongdemoentityid' alias='luoyongdemoentityid_count' aggregate='count' />
<filter type='and'>
<condition attribute='new_returnrequest' operator='eq' value='{0}' />
<condition attribute='statecode' operator='eq' value='0' />
</filter>
</entity>
</fetch>", returnRequestEF.Id);
EntityCollection LuoYontDemoEntity_count_result = service.RetrieveMultiple(new FetchExpression(LuoYontDemoEntity_count));
if(if (LuoYontDemoEntity_count_result.Entities.Count >= 1 && LuoYontDemoEntity_count_result.Entities[0].Contains("LuoYontDemoEntity_count") && LuoYontDemoEntity_count_result.Entities[0]["LuoYontDemoEntity_count"] != null && ((AliasedValue)LuoYontDemoEntity_count_result.Entities[0]["LuoYontDemoEntity_count"]).Value != null))
{
detailsCount = (Int32)((AliasedValue)LuoYontDemoEntity_count_result.Entities[]["luoyongdemoentityid_count"]).Value;
}
currentEntity["new_name"] = service.Retrieve(returnRequestEF.LogicalName, returnRequestEF.Id, new ColumnSet("new_name")).GetAttributeValue<string>("new_name") + "-" + (detailsCount + ).ToString("");
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in PreLuoYontDemoEntityCreate.", ex);
}
catch (Exception ex)
{
tracingService.Trace("PreLuoYontDemoEntityCreate unexpected exception: {0}", ex.Message);
throw;
}
}
}
}
}
值得提一句的是,如果是对货币字段进行计算,其结果是货币类型,获得货币的数值需要先强制转换为货币,再获取其Value。
更多的详情请参考官方文档:Use FetchXML aggregation
Dynamics 365 CE中使用FetchXML进行聚合运算的更多相关文章
- Dynamics 365 CE中AsyncOperationBase表记录太多,影响系统性能怎么办?
微软动态CRM专家罗勇 ,回复311或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要是根据微软官 ...
- Dynamics 365 CE Update消息PostOperation阶段Image的尝试
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Use SQL to Query Data from CDS and Dynamics 365 CE
from : https://powerobjects.com/2020/05/20/use-sql-to-query-data-from-cds-and-dynamics-365-ce/ Have ...
- 使用Dynamics 365 CE Web API查询数据加点料及选项集字段常用查询
微软动态CRM专家罗勇 ,回复336或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 紧接上文:配置Postman通过OAuth 2 implicit ...
- Dynamics 365 marketing中添加自定义渠道磁贴
Dynamics 365 marketing中默认的渠道只有Marketing Email和Marketing Activity,想要添加其他渠道必须自定义磁贴,自定义磁贴的步骤如下: 1.创建实体 ...
- Dynamics 365 CE将自定义工作流活动程序集注册到磁盘并引用其他类库
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Dynamics 365 CE命令栏按钮点击后刷新表单页面方法
微软动态CRM专家罗勇 ,回复326或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...
- 启用WCF压缩提升Dynamics 365 CE的网络性能
摘要: 微软动态CRM专家罗勇 ,回复307或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文系根据微 ...
- 做了面向互联网部署的Dynamics 365 CE更改AD FS的登录页面
摘要: 微软动态CRM专家罗勇 ,回复306或者20190307可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 默认情况下A ...
随机推荐
- Python_添加行号
filename='demo.py' with open(filename,'r')as fp: lines=fp.readlines() #读取所有行 maxLength=max(map(len,l ...
- cross-env 兼容跨平台运行脚本
https://www.npmjs.com/package/cross-env 跨平台运行脚本 The problem Most Windows command prompts will choke ...
- Shell脚本中获取select值
最近做一个数据清理,根据行号清理,所以需要查出这个行的最大最小值出来进行删除,如果靠手动每次去查,太麻烦所以就用在sh脚本当中执行SELECT语句,并将结果赋值给一个变量. sh脚本如下 #! /bi ...
- C++相关:部分标准库特殊设施
C++ tuple(元组) tuple是C++11新标准里的类型.它是一个类似pair类型的模板.pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以 ...
- Vlan 原理
VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由 ...
- Android开发的一些总结
Android开发与Java区别 1.执行入口点 AndroidMainfest.xml文件中的intent-filter 2.基于组件 Activity(Fragment), Service, Br ...
- 拇指玩」制作的「谷歌安装器」app
作者:匿名用户链接:https://www.zhihu.com/question/57468448/answer/153000587来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- SpringBootApplication注解 专题
到这里,看到所有的配置是借助SpringFactoriesLoader加载了META-INF/spring.factories文件里面所有符合条件的配置项的全路径名.找到spring-boot-aut ...
- JavaScript单线程和异步机制
随着对JavaScript学习的深入和实践经验的积累,一些原理和底层的东西也开始逐渐了解.早先也看过一些关于js单线程和事件循环的文章,不过当时看的似懂非懂,只留了一个大概的印象:浏览器中的js程序时 ...
- transform-origin
transform-origin:改变原点中心位置 transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,transform-origin并不是transform中的属性值, ...