我正在尝试更新电话实体上的字段,然后将其关闭。据我所知,目前这样做需要两个电话。但这非常缓慢,因为处理60个电话花了30分钟,而我要处理大约20万个电话。有没有办法将两者合并为一个通话?

这是我当前的代码-

foreach (phonecall phonepointer in _businessEntityCollection.BusinessEntities.Cast<phonecall>()
     .Where(phonepointer => phonepointer.statecode.Value == PhoneCallState.Open))
{
  //Update fiserv_contactstatus value
  phonepointer.fiserv_contactstatus = Picklist;
  crmService.Update(phonepointer);

  //Cancel activity
  setStatePhoneCallRequest.PhoneCallState = PhoneCallState.Canceled;
  setStatePhoneCallRequest.PhoneCallStatus = 200011;
  setStatePhoneCallRequest.EntityId = phonepointer.activityid.Value;

  crmService.Execute(setStatePhoneCallRequest);
}

最佳答案

不幸的是,您无能为力。

您可以尝试使用新的SDK和XRM上下文(强类型类)来批量更新电话实体(应该更快),但是您仍然需要使用老式的CrmService进行实际更改每个实体的状态,一一对应。

编辑:
您也可以直接更改数据库中实体的状态,但这是您的最后选择,因为不支持对CRM DB进行手动更改,这很危险。

说真的,不得已!不,我不是在开玩笑!

关于c# - 多个执行调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8593544/

10-13 01:58