0

連絡先エンティティと関連付けられている予定エンティティがあります。contact_id を明示的に指定せずに、この予定エンティティからすべての関連付けを削除しようとしています。これは、予定エンティティを作成し、既存の連絡先に関連付けるコード スニペットです。

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"] = "test.test@acmegroup.com";
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);
4

1 に答える 1

2

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);
于 2013-03-01T20:23:16.740 に答える