2013-02-28 64 views
0

的所有關聯我有與接觸實體具有關聯關係的約會實體。我正試圖在沒有明確提供contact_id的情況下從該約會實體中移除所有關聯。這裏是我的代碼片段與創建約會實體,然後與現有的聯繫人關聯。MS動態:如何刪除實體

Entity activity = new Entity("appointment"); 
activity["scheduledstart"] = DateTime.Now; 
activity["scheduledend"] = DateTime.Now.AddMinutes(30); 
activity["subject"] = "Test Meeting"; 
activity["description"] = "Test Description"; 
activity["owneridname"] = "test_user"; 
activity["location"] = "Dallas"; 

EntityCollection attendees = new EntityCollection(); 
Entity attendee1 = new Entity("activityparty"); 
attendee1["addressused"] = "[email protected]"; 
attendees.Entities.Add(attendee1); 
activity["requiredattendees"] = attendees; 

Guid id = _service.Create(activity); 
Console.WriteLine("id: " + id); 

AssociateRequest associateRequest = new AssociateRequest(); 
associateRequest.Relationship = new Relationship("new_appointment_contact"); 
associateRequest.Target = new Microsoft.Xrm.Sdk.EntityReference("appointment", id); 

EntityReferenceCollection referenceCollection = new EntityReferenceCollection(); 
Microsoft.Xrm.Sdk.EntityReference entityReference = new Microsoft.Xrm.Sdk.EntityReference("contact", new Guid("e6e71e53-b44b-e211-a81e-0050568b36bf")); 
referenceCollection.Add(entityReference); 
associateRequest.RelatedEntities = referenceCollection; 

// Execute the request. 
_service.Execute(associateRequest); 

我知道使用DisassociateRequest刪除此關聯,但我不想明確提供contact_id。我只需要像.Clear()可 刪除所有聯繫人關聯。

DisassociateRequest disassociateRequest = new DisassociateRequest(); 
disassociateRequest.Relationship = new Relationship("new_appointment_contact"); 
disassociateRequest.Target = new Microsoft.Xrm.Sdk.EntityReference("appointment", id); 

EntityReferenceCollection referenceCollection2 = new EntityReferenceCollection(); 
Microsoft.Xrm.Sdk.EntityReference entityReference2 = new Microsoft.Xrm.Sdk.EntityReference("contact", new Guid("e6e71e53-b44b-e211-a81e-0050568b36bf")); 
referenceCollection2.Add(entityReference2); 
disassociateRequest.RelatedEntities = referenceCollection2; 

// Execute the request. 
_service.Execute(disassociateRequest); 

回答

1

我用GetRelatedEntities方法把所有相關實體到集合,然後使用此集合撇清所有相關實體:

DisassociateRequest disassociateRequest = new DisassociateRequest(); 
disassociateRequest.Relationship = new Relationship("new_appointment_contact"); 
disassociateRequest.Target = new Microsoft.Xrm.Sdk.EntityReference("appointment", id); 

EntityReferenceCollection referenceCollection2 = new EntityReferenceCollection(); 
Entity existingAppointment = _service.Retrieve("appointment", id, new ColumnSet(true)); 
foreach (Entity item in existingAppointment.GetRelatedEntities(orgContext, "new_appointment_contact")) 
{ 
    Guid contactId = new Guid(item["contactid"].ToString()); 
    Microsoft.Xrm.Sdk.EntityReference entityReference2 = new Microsoft.Xrm.Sdk.EntityReference("contact", contactId); 
    referenceCollection2.Add(entityReference2); 
} 
disassociateRequest.RelatedEntities = referenceCollection2; 

_service.Execute(disassociateRequest);