我正在构建一个连接到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;
答案 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);