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 ...
随机推荐
- 【问题】sql数据库报无效的数据证书,需重新安装
事情的经过: 今天打开sql2014数据库,没有成功运行,但是给我弹出一个"无效的数据证书,需要重新安装!"提示.什么情况.为什么,应该是前一天弄vs导致的.因为升级了vs2017 ...
- @EnableWebMVC注解理解
@EnableWebMVC注解用来开启Web MVC的配置支持.也就是写Spring MVC时的时候会用到.
- nuget的问题, NuGet 程序包还原失败
将项目中的packages.config 中引用移除. 1.使用nuget管理器,进行安装 2.下载对应dll,手动引入项目
- 详解vue的diff算法
前言 我的目标是写一个非常详细的关于diff的干货,所以本文有点长.也会用到大量的图片以及代码举例,目的让看这篇文章的朋友一定弄明白diff的边边角角. 先来了解几个点... 1. 当数据发生变化时, ...
- 【基于url权限管理 shiro(一)】--基础
只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.权限管理包括用户认证和授权两部分. 用户认证 1.概 ...
- Markdown 编辑器语法 专题
基本技巧 代码 如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` 实现 通常编辑器根据代码片段适配合适的高亮方法,但你也可以用 ```(tab键上的符号,要从每行 ...
- pdb 调试
以前写python一直用pycharm,调试啥的比较方便,最近要在远程服务器上调试一些程序,只有一个控制台就可以用pdb进行调试了.常用的只有几个命令. break 或 b 设置断点 continue ...
- float_array.go
) if err != nil { log.Fatalf("Could not parse: %s", s) ret ...
- [Noi2015]软件包管理器 BZOJ4196
分析:水题 每次安装的时候和根节点求lca的过程中区间覆盖+区间查询 每次删除的时候查询子树中安装的数量+区间覆盖 附上代码: #include <cstdio> #include < ...
- NOIP2017 酱油送命记
Day0 一天,在机房,有点考前的紧张和慌张,打了一下午的模板,立了3个不该立的flag... Day1 拿到试题,万分紧张,T1是数论啊 害怕,一直以为D2T1才是数论,仔细观察却发现(flag1: ...