• 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();
                }
            }
        }
    }
    结果如下,捕获到了异常,这是因为最后一个删除操作没有找到记录,导致删除失败导致的,前面两个步骤也没有创建或者更新记录:
     
    当然我也做了测试,如果删除的记录存在,是可以三个消息都执行成功的。
     
  • 相关阅读:
    zookeeper3.5.6单机集群环境搭建
    mycat分表
    myacat分片及全局表定义
    装饰器
    函数参数,作用域
    可变,不可变,无序, 有序
    dict
    列表可变,元祖不可变
    列表操作
    字符串find
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_CRM_2016_New_Feature_ExecuteTransactionRequest.html
Copyright © 2020-2023  润新知