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