Dynamics CRM 2011 编程系列(19):插件中的事务
2012-05-17 20:17
435 查看
Dynamics CRM 2011中的插件支持事务处理,如果要在插件中执行回滚操作,必须手工的抛出错误。
联系人
1.在客户更新的时候创建分别创建一条客户记录和一条联系人记录
2.检查插件的当前执行环境是否包含在事务中,如果包含则抛出错误回滚操作。
图1
图2
图3
图4
虽然弹出窗口有点丑陋,但为了达到事务的效果我们还得接受它呀。
涉及的实体
客户联系人
需要实现的需求
1.在客户更新的时候创建分别创建一条客户记录和一条联系人记录2.检查插件的当前执行环境是否包含在事务中,如果包含则抛出错误回滚操作。
实现步骤
图1
图2
图3
图4
使用到的脚本
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Transactions; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; namespace Plugin19 { public class TestTransaction : IPlugin { public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(null); //创建客户 Entity account = new Entity(); account.LogicalName = "account"; account["name"] = "马小虎"; service.Create(account); //创建联系人 Entity contact = new Entity(); contact.LogicalName = "contact"; contact["lastname"] = "黄小仙"; service.Create(contact); if (context.IsInTransaction)//是否在事务中 { throw new InvalidPluginExecutionException("取消创建"); } } } }
小结
虽然弹出窗口有点丑陋,但为了达到事务的效果我们还得接受它呀。
相关文章推荐
- Dynamics CRM 2011 编程系列(25):插件的依赖注入
- Dynamics CRM 2011 编程系列(21):插件调试
- Dynamics CRM 2011 编程系列(16):插件
- Dynamics CRM 2011 编程系列(23):用插件调用WCF
- Dynamics CRM 2011 编程系列(22):用插件调用Web Service
- Dynamics CRM 2011 编程系列(20):插件队列
- Dynamics CRM 2011 编程系列(24):在插件中使用早期绑定
- Dynamics CRM 2011 编程系列(18):插件中的Read操作
- Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
- Dynamics CRM 2011 编程系列(14):JS编程之表单控件的执行上下文
- Dynamics CRM 2011 编程系列(27):使用触发器
- Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)
- Dynamics CRM 2011 编程系列(29):自定义页面
- Dynamics CRM 2011 编程系列(30):使用ASP.NET Ajax技术的自定义页面
- Dynamics CRM 2011 编程系列(9):JS编程之客户端实体
- Dynamics CRM 2011 编程系列:自定义工作流
- Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
- Dynamics CRM 2011 编程系列(1):开发环境的搭建
- Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]
- Dynamics CRM 2011 编程系列(12):JS编程之征服表单控件(二)