It can be used when there is a 1:N relationship between the entities. It is equivalent of creating a child record from the parent form.
For example there is a 1:N relationship between account and contact. if you create a contact from the contact subgrid from the account form, it will prefill the parentcustomer field and all the fields defined in the relationship mappings.
The following screen shot displays the mappings of 1:N relationship between account and contact.
The same functionality can be achieved using InitializeFromRequest. This request returns a InitializeFromResponse. The request does not create a new record but the response can be used to create a new record.
Here is the code.
// Create the request object
InitializeFromRequest initialize = new InitializeFromRequest();
// Set the properties of the request object
initialize.TargetEntityName = "contact";
// Create the EntityMoniker
initialize.EntityMoniker = new EntityReference("account", new Guid("8A5D8108-DE3B-E311-9401-00155D1B7B00"));
// fields to initialised from parent entity
initialize.TargetFieldType = TargetFieldType.All;
// Execute the request
InitializeFromResponse initialized =
(InitializeFromResponse)_serviceProxy.Execute(initialize);
if (initialized.Entity != null)
{
//get entity from the response
Entity entity = initialized.Entity;
// set the name for the contact
entity.Attributes.Add("firstname", "John");
entity.Attributes.Add("lastname", "Smith");
//create a new contact
_serviceProxy.Create(entity);
}
Happy coding..