2015-05-08 26 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); 
    } 
} 
相关问题