2015-05-08 27 views
2

我正在努力尋找一種方法來使用ExecuteMultipleRequest來創建記錄並同時將它與其他記錄相關聯。到目前爲止,我只在第一次創建記錄方面取得了成功,然後在另一個請求中設置了我的關聯。在CRM 2011中如何創建記錄並將其關聯到同一個ExecuteMultipleRequest

有了這個代碼,它拋出,它需要一個目標(這需要有以前已提交創建記錄,並得到一個ID)

private AssociateRequest GetConfigurationRequest(VariableDataRequestModel receivedRequest) 
{ 
    var configurationRelationship = new Relationship(ConfigurationRelationshipName);    
    var configurationEntities = new EntityReferenceCollection(new EntityReference[]{new EntityReference(ConfigurationEntityLogicalName,new Guid(receivedRequest.ConfigurationId))});       
    var rtn = new AssociateRequest() { RelatedEntities = configurationEntities, Relationship = configurationRelationship }; 
    return rtn; 
} 

回答

5

只有這樣,才能實現與ExecuteMultipleRequest是個例外

Guid accountId = new Guid("c85dca5d-6520-4436-a5f6-178b633af819"); 

Entity myAccount = new Entity("account"); 
myAccount["name"] = "TEST ACCOUNT"; 
entity.Id = accountId; 
// ... 
EntityReferenceCollection relatedEntities = new EntityReferenceCollection(); 
relatedEntities.Add(new EntityReference("account", accountId)); 

指定Id是允許的,但不建議:在創建記錄之前指定新記錄的Id

+2

讓該平臺創建順序的GUID可以更好的SQL性能:http://blogs.msdn.com/b/crminthefield/archive/2015/01/19/the-dangers- guid-newguid.aspx – Bvrce

+0

這很不幸。我真的儘量使用ExecuteMultipleRequest來提高性能。這聽起來像我只是在長期的業績問題上交易一些短期表現。謝謝! – Troy

0

您可以做的另一件事是提交ExecuteMultipleRequest中的記錄,然後獲取ExecuteMultipleResponse中的GUID,然後您可以在創建的記錄中使用該GUID來執行AssociateRequest。

例子:

ExecuteMultipleResponse response = (ExecuteMultipleResponse)service.Execute(updateCRM); 

List<Entity> addedRecordList = new List<Entity>(); 

foreach (ExecuteMultipleResponseItem item in response.Responses) 
{ 
    Guid responseReturnedGuid = (Guid)item.Response.Results.Values.FirstOrDefault(x => x is Guid); 
    if (responseReturnedGuid != Guid.Empty || responseReturnedGuid != null) 
    { 
     Entity addedRecord = (Entity)updateCRM.Requests[item.RequestIndex].Parameters.Values.FirstOrDefault(x => x is Entity); 
     addedRecord.Id = responseReturnedGuid; 
     addedRecordList.Add(addedRecord); 
    } 
} 
相關問題