2011-12-21 57 views
3

我试图更新电话实体上的字段,然后关闭它。据我所知,目前这样做需要两次电话。但是,这是非常缓慢的,因为处理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); 
} 
+0

出于某种原因,它将代码格式化为有趣,但有一个更新调用,然后是执行调用。 – Merds 2011-12-21 17:06:49

+1

这个实体还有其他插件吗? 30分钟太过分了。 – ccellar 2011-12-21 17:13:14

+0

不,这个entirdy – Merds 2011-12-21 17:24:46

回答

1

不幸的是,几乎没有什么可以做。

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

编辑: 您也可以直接更改数据库中实体的状态,但这应该是您的最后手段,因为对CRM数据库的手动更改不受支持并且是危险的。

认真,最后的手段!不,我不是在开玩笑!