Does anyone have a working code snippet for CreateRequest and a subsequent AssociateRequest in a CRM ExecuteTransactionRequest set? I'm searching and having no luck.
Thank you for any help :-)
EDIT: A code snippet...
var entPetition = new msd_petition();
Petition.MapEntityFromModel(entPetition, mdlPetition);
var reqPetition = new CreateRequest() { Target = entPetition };
_transactionRequest.Requests.Add(reqPetition);
// Add PetitionEvents to transaction
foreach (var mdlEvent in mdlPetition.Events)
{
var entEvent = new msd_petitionevent();
PetitionEvent.MapEntityFromModel(entEvent, mdlEvent);
var reqEvent = new CreateRequest() { Target = entEvent };
_transactionRequest.Requests.Add(reqPetition);
// Add Petition-PetitionEvent association
var assocPetition2PetitionEvent = new AssociateRequest()
{
Target = new EntityReference(msd_petition.EntityLogicalName, entPetition.msd_petitionId.Value),
RelatedEntities = new EntityReferenceCollection
{
new EntityReference(sevp_petitionevent.EntityLogicalName, entEvent.msd_petitioneventId.Value)
},
Relationship = new Relationship("msd_petition_petitionevent")
};
_transactionRequest.Requests.Add(assocPetition2PetitionEvent);
}
You do not need the second AssociateRequest
. You can achieve the same using just the CreateRequest
and Entity.RelatedEntites
property. It would be executed as a single transaction.
var entPetition = new msd_petition();
Petition.MapEntityFromModel(entPetition, mdlPetition);
var petitionPetitionEventRelationship = new Relationship("msd_petition_petitionevent");
var petitionRelatedEvents = new EntityCollection();
// Add PetitionEvents to transaction
foreach (var mdlEvent in mdlPetition.Events)
{
var entEvent = new msd_petitionevent();
PetitionEvent.MapEntityFromModel(entEvent, mdlEvent);
petitionRelatedEvents.Entities.Add(entEvent);
}
entPetition.RelatedEntities.Add(petitionPetitionEventRelationship, petitionRelatedEvents);
service.Create(entPetition);