zoukankan      html  css  js  c++  java
  • Dynamics CRM 2015/2016新特性之三十三:有了ExecuteTransactionRequest,再也不用担心部分成功部分失败了

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复216或者20160329可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me
    从Dynamics CRM 2015 UR1 开始,新增了ExecuteTransactionRequest,主要是用来处理以前面临的窘境:执行多个消息,有些消息成功,有些消息失败,系统是让成功的成功,让失败的失败。当然从Dynamics CRM 2013起也不是无计可施,我的博文:Dynamics CRM中的操作(action)是否是一个事务(transaction)? 提供了用操作来实现事务的方法。现在新增的ExecuteTransactionRequest消息则更加方便了,不需要借助操作了。
    using Microsoft.Xrm.Client;
    using Microsoft.Xrm.Client.Services;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Messages;
    using Microsoft.Xrm.Sdk.Query;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.ServiceModel;
    
    namespace LuoYongLab
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    var orgService = new OrganizationService(new CrmConnection("CRM"));
                    var testEntity1 = new Entity("ly_test");
                    testEntity1["ly_name"] = "这是通过ExecuteTransactionRequest消息处理的-1";
                    CreateRequest req1 = new CreateRequest();
                    req1.Target = testEntity1;
                    var testEntity2 = new Entity("ly_test", "ly_alternatekey", "13926492254");
                    testEntity2["ly_name"] = "这是通过ExecuteTransactionRequest消息处理的-2";
                    UpdateRequest req2 = new UpdateRequest();
                    req2.Target = testEntity2;
                    DeleteRequest req3 = new DeleteRequest()
                    {
                        Target = new EntityReference("ly_test", "ly_alternatekey", "13926492260")
                    };
                    ExecuteTransactionRequest req = new ExecuteTransactionRequest();
                    req.Requests = new OrganizationRequestCollection() { req1, req2, req3 };
                    orgService.Execute(req);
                    Console.WriteLine("程序运行完成");
                    Console.ReadKey();
                }
                catch (FaultException ex)
                {
                    Console.WriteLine("程序出现异常:ex.Message=" + ex.Message);
                    Console.WriteLine("ex.StackTrace=" + ex.StackTrace);
                    Console.ReadKey();
                }
            }
        }
    }
    结果如下,捕获到了异常,这是因为最后一个删除操作没有找到记录,导致删除失败导致的,前面两个步骤也没有创建或者更新记录:
     
    当然我也做了测试,如果删除的记录存在,是可以三个消息都执行成功的。
     
  • 相关阅读:
    DOM操作 append prependTo after before
    Vue(2)- v-model、局部组件和全局组件、父子组件传值、平行组件传值
    Vue(1)- es6的语法、vue的基本语法、vue应用示例,vue基础语法(转)
    Linux环境下虚拟环境virtualenv安装和使用(转)
    REST、DRF(View源码解读、APIView源码解读)
    超哥的 LINUX 入门大纲
    redis入门
    CRM总结
    如何搭建一个vue项目(完整步骤)
    DRF 视图
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_CRM_2016_New_Feature_ExecuteTransactionRequest.html
Copyright © 2011-2022 走看看