开始之前,我们要确认一下 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的数据才会储存

我们开始做我们第三个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

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

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

创建一个dynamics 365 CRM online plugin (四) - PreValidation相关推荐

  1. 创建一个dynamics 365 CRM online plugin (一) - Hello World Plugin

    源代码连接:https://github.com/TheMiao/Dynamics365CRM/blob/master/MyCRM/MyCRM/HelloWorld.cs 首先,我们需要创建一个.NE ...

  2. 创建一个dynamics 365 CRM online plugin (三) - PostOperation

    上两节我们创建了一个 PreOperation的plugin 今天我们创建一个PostOpeartion的plugin和之前的plugin连接起来 当创建contact之后,我们要添加一个task给新 ...

  3. 【转】Dynamics 365 CRM 开发架构简介

    目录 概览 名词解释 连接到Dynamics 365 CRM Web API Organization service 选择 - Web API vs. Organization service 扩展 ...

  4. Dynamics 365 CRM 开发架构简介

    目录 概览 名词解释 连接到Dynamics 365 CRM Web API Organization service 选择 - Web API vs. Organization service 扩展 ...

  5. Dynamics 365 CRM (online) 使用WebApi调用全局action(Plugin)执行批量更新操作, 前端JS批量上传记录到CRM中

    创建一个action process,如下图,分别有两个inputparameter 和一个outputparameter 2.使用visual studio 2019编写一个plugin dll, ...

  6. 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow

    上个帖子中, 我们创建了个发email的workflow. 但是我们邮件当中的tax 值是 hard code, 这在开发当中是不容许的. 那今天我们来把这个build in workflow用 in ...

  7. 创建一个dynamics CRM workflow (二) - Build in Workflows

    这里我们不着重讲解build in workflow. 但是, 如果要上手custom workflow, 我们必须要了解 build in workflow. build-in workflow 在 ...

  8. Dynamics 365 CRM Connected Field Service 自动发送command

    上期降到了怎样部署connected field service(CFS) 我们假设现在IoT 设备是温度监控器, 当温度触发我们之前预设的温度值, IoT会通过IoT Hub 发送IoT Alert ...

  9. Dynamics 365 CRM证书更换

    周末更新公司crm服务器证书时出现一些问题,感谢提供支持的第三方公司 主要步骤参考如下博文https://blog.csdn.net/hyhcl/article/details/109444954,现 ...

最新文章

  1. 关于C语言中 字符串常量的问题
  2. python 返回字符串长度,当使用特殊字符时,Python返回错误的字符串长度
  3. 源数据文件(.csv)中的空格串和空串对pandas读取结果的影响
  4. Windows 2000、XP、XP+进程名描述
  5. Android的NDK开发(3)————JNI数据类型的详解
  6. CTFshow 命令执行 web61
  7. Asp.net 三层架构搭建示例一
  8. python tkinter button颜色变不了_更改函数中Tkinter按钮的颜色
  9. IOI1999 花店橱窗布置
  10. 【C语言】控制台窗口图形界面编程(一)句柄和文本属性
  11. 分表分库时机选择及策略
  12. 【Elasticsearch】es 插件类型
  13. stm32可以移植linux系统吗,如何在STM32上移植Linux?超详细的实操经验分享
  14. fastadmin项目实战踩坑
  15. 【WIN】超简单的Excel密码破解
  16. 硬盘缓存作用是什么,缓存是不是越大越好?
  17. android -chrome 调试
  18. 记录日常行程的微信小程序开发与实现-武汉理工大学
  19. Codeforces Round #670 (Div. 2) D. Three Sequences(差分序列、数学思维分析)
  20. 弘辽科技:新手前期如何开网店?

热门文章

  1. select及触发方式,select监听多链接,select与epoll的实现区别
  2. 2019-3-15 模拟赛 T1
  3. $ npm install时候报出:npm ERR! Unexpected token in JSON at position 10841
  4. 类内的函数共享给对象使用
  5. [PY3]——字符串的分割、匹配、搜索方法总结
  6. 共享一个资源(卖票)
  7. c语言中宏替换时的顺序
  8. linux系统路由功能记录
  9. linux网络存储服务器选题意义,基于嵌入式Linux的网络存储的实现和研究
  10. echarts怎么控制一个点沿着折线移动_计算机怎么识别图像中的直线?