• 欢迎光临~

用ExecuteMultiple执行多个请求 with c#

开发技术 开发技术 2022-12-14 次浏览

前言

Dynamics365中的ExecuteMultiple用来执行多个请求,比如通过控制台应用程序创建50个客户,我可以Create50次,也可以用ExecuteMultiple,1次就创建50个客户,那么两者那个创建记录耗时更短?实验如下:

1.单独创建

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Configuration;
using System.Diagnostics;

namespace Gongdh.D365.ExecuteMultiple
{
    class Program
    {
        private static CrmServiceClient _client;

        public static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            _client = new CrmServiceClient(ConfigurationManager.ConnectionStrings["Dev"].ConnectionString);

            for (int i = 0; i < 50; i++)
            {
                Entity create_account = new Entity("account");
                create_account["name"] = $"CREATE ACCOUNT {i + 1}";
                _client.Create(create_account);
            }
            sw.Stop();
            Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");
            Console.ReadKey();

        }
    }
}

用ExecuteMultiple执行多个请求 with c#

2.ExecuteMultiple创建

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Configuration;
using System.Diagnostics;

namespace Gongdh.D365.ExecuteMultiple
{
    class Program
    {
        private static CrmServiceClient _client;

        public static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            _client = new CrmServiceClient(ConfigurationManager.ConnectionStrings["Dev"].ConnectionString);
            ExecuteMultipleRequest request = new ExecuteMultipleRequest()
            {
                Requests = new OrganizationRequestCollection(),
                Settings = new ExecuteMultipleSettings
                {
                    ContinueOnError = false,
                    ReturnResponses = true
                }
            };

            for (int i = 0; i < 50; i++)
            {
                Entity create_account = new Entity("account");
                create_account["name"] = $"CREATE ACCOUNT {i + 1} - ExecuteMultiple";
                CreateRequest createRequest = new CreateRequest()
                {
                    Target = create_account
                };
                request.Requests.Add(createRequest); 
            }

            var response = (ExecuteMultipleResponse)_client.Execute(request);//执行

            sw.Stop();
            Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms.");
            Console.ReadKey();

        }
    }
}

用ExecuteMultiple执行多个请求 with c#

结论

ExecuteMultiple耗时更短。

程序员灯塔
转载请注明原文链接:用ExecuteMultiple执行多个请求 with c#
喜欢 (0)