D365 C# - 检索多个并且更新非常慢

时间:2018-04-18 16:47:01

标签: c# dynamics-crm microsoft-dynamics fetchxml dynamics-crm-365

我正在构建一个连接到D365实例的控制台,使用获取XML查找记录并更新具有特定值的记录。它有效,它正在更新记录。但是,它只更新了大约一两秒,这远非理想,我有数十万条记录需要更新。我见过/使用的控制台应用程序至少会更新数百秒。

我是否想以错误的方式做我想做的事情?我的代码中必定存在一些使其效率低下/愚蠢的东西。我还应该说这是我第一次使用C#所以我可能会做一些非常愚蠢的事情。

SELECT jsonb_agg(temp.data) AS result
FROM (SELECT json_array_elements(REPLACE(array_to_json(build_items)::TEXT, 'item_id', 'value')::json) AS data
  FROM menu_items
  WHERE build_items IS NOT NULL) temp;

1 个答案:

答案 0 :(得分:2)

service.Execute(multipleRequest)循环中取出foreach,将其保留在外面。这样执行将是ExecuteMultipleRequest

var multipleRequest = new Microsoft.Xrm.Sdk.Messages.ExecuteMultipleRequest()
                {
                    Settings = new ExecuteMultipleSettings()
                    {
                        ContinueOnError = false,
                        ReturnResponses = true
                    },
                    Requests = new OrganizationRequestCollection()
                };
                EntityCollection accounts = service.RetrieveMultiple(new FetchExpression(fetchquery));
                foreach (var c in accounts.Entities)
                {

                    Console.WriteLine("accountid: {0}", c.Attributes["name"]);                
                    Microsoft.Xrm.Sdk.Messages.UpdateRequest updateRequest = new Microsoft.Xrm.Sdk.Messages.UpdateRequest { Target = c };
                    multipleRequest.Requests.Add(updateRequest);
                    c.Attributes["name"] = "New Name";

                }

Microsoft.Xrm.Sdk.Messages.ExecuteMultipleResponse multipleResponse = (Microsoft.Xrm.Sdk.Messages.ExecuteMultipleResponse)service.Execute(multipleRequest);