博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
创建一个dynamics 365 CRM online plugin (四) - PreValidation
阅读量:5041 次
发布时间:2019-06-12

本文共 1755 字,大约阅读时间需要 5 分钟。

开始之前,我们要确认一下 Plugin 的 pipeline. PreValidation -> PreOperation -> Server Side System Main Event-> PostOperation

PreValidation 是在security check 之前, 通常会用来加载外部数据和用户不相关的内容.

PreOperation 是在security check 之后 服务器处理之前, 通常会用来做一系列的功能.
PostOperation 是在System Main Event 在服务器处理发生之后, 通常是用来对Event做一些额外添加.

 

Database Transaction Support

DTS 值在PreOperation 和PostOperation中有效.

DTS是 当你有exception的时候, 你的所有的data 都会roll back 不会记录到数据库中. 只有完全execute的Plugin的数据才会储存

 创建dynamics CRM plugin

 我们开始做我们第三个plugin.  PreValidation

这个Plugin的功能是查重. 是的,虽然系统内置有查重功能,但是为了做PreValidation的plugin,我们实现一下.

这里我们用QueryExpression用来查询email address

// Plug-in business logic goes here.                      string email = string.Empty;                    if (contact.Attributes.Contains("emailaddress1"))                    {                        email = contact.Attributes["emailaddress1"].ToString();                        // Now we need use query to retrieve email                        // select * from contact where emailaddress1 == 'email'                        var query = new QueryExpression("contact");                        query.ColumnSet = new ColumnSet(new string[] { "emailaddress1" });                        query.Criteria.AddCondition("emailaddress1", ConditionOperator.Equal, email);                        var collection = service.RetrieveMultiple(query);                        if (collection.Entities.Count > 0)                        {                            throw new InvalidPluginExecutionException("Contact with email already exists!!!");                        }                    }

 

我们把代码复制到try里面之后rebuild. 用PluginRegistration tool把代码重新部署到instance当中.

之后我们创建一个contact填写好邮箱,用contact2来填写相同邮箱.

这时候就会出现我们的bug

创建dynamics CRM plugin

 

 让我们打开Error Log 发现我们的message是之前代码中编译好的.

 

创建dynamics CRM plugin

 

转载于:https://www.cnblogs.com/TheMiao/p/10674031.html

你可能感兴趣的文章
IO端口和IO内存的区别及分别使用的函数接口
查看>>
夺命雷公狗---node.js---10之POST的接收
查看>>
自定义的JavaScript定时器
查看>>
smarty对数组进行json_encode
查看>>
Django model 字段类型及选项解析(二)
查看>>
《Linux命令行与shell脚本编程大全》第十四章 处理用户输入
查看>>
189. Rotate Array 从右边开始翻转数组
查看>>
用wget命令下载jdk
查看>>
python之路 Javascript的学习
查看>>
HDU 1501 Zipper(DP,DFS)
查看>>
无法远程连接MySQL数据库服务器-(1130错误)
查看>>
C#读写Config配置文件
查看>>
k8s 核心功能 - 每天5分钟玩转 Docker 容器技术(116)
查看>>
LeetCode 简单 -旋转字符串(796)
查看>>
git分支管理
查看>>
Linux常用命令-进阶版(以及端口的操作)
查看>>
Jzoj5542 董先生的钦点
查看>>
练习3-5 输出闰年
查看>>
shell脚本制作类似window下rar的自解压方式
查看>>
激活函数可视化
查看>>