O SDK atual não fornece um método par clonarmos registros, assim escrevo este post para dar um exemplo de como fazer, na verdade não mostrarei nada de novo e sim o procedimento para se clonar.
Abaixo um exemplo de um Clone da entidade Oportunidade, mas vejam que é só um exemplo, o mesmo se aplica para todos as outras entidades, podemos até termos apenas um método genérico para realizar o procedimento, mas como eu disse o importante é a ideia…
private Entity ClonarOportunidade(IOrganizationService service, Guid oportunidadeID)
{
// Declara objetos
Guid novaOportunidadeID;
Entity oportunidadeEntity;
// Cria objetos
columns = new Microsoft.Xrm.Sdk.Query.ColumnSet();
// Seta para recuperar todas as colunas
columns.AllColumns = true;
// Recupera Oportunidade
oportunidadeEntity = (Entity)service.Retrieve("opportunity", oportunidadeID, columns);
// Verifica se localizou a Oportunidade
if (oportunidadeEntity != null)
{
// Remove atributos desnecessários
oportunidadeEntity.Attributes.Remove("opportunityid");
oportunidadeEntity.Attributes.Remove("statecode");
oportunidadeEntity.Attributes.Remove("statuscode");
// Limpa o ID
oportunidadeEntity.Id = Guid.NewGuid();
// Limpa o Assunto
oportunidadeEntity["name"] = "";
// Clona a Oportunidade
novaOportunidadeID = service.Create(oportunidadeEntity);
// ID da Nova Oportunidade
oportunidadeEntity.Id = novaOportunidadeID;
}
return oportunidadeEntity;
}
Bom é isso…
Att,
Tiago Cardoso