miércoles, 8 de abril de 2015

Usando el nuevo método “Upsert” en Dynamics CRM 2015 Update 1

Sigo con lo nuevo de la actualización de CRM. Hoy vamos a hablar de una funcionalidad que ya muchos de ustedes seguramente hayáis utilizado en el pasado, desarrollando vuestros propios códigos.

En la funcionalidad de “Upsert”. La idea es que definiendo unas claves, se pueda enviar una petición a CRM de actualización de un registro, y si no es encontrado con dichas claves, se realice una creación.

Antiguamente había que hacer varias peticiones a Dynamcis CRM para hacer esto, básicamente, una consulta de si existe el registro, y una bifurcación “IF” que dirigía a una creación o actualización.

La nueva versión ya trae un mensaje de tipo “UpdateRequest”, que nos facilita la vida e incremente además el rendimiento ya que se reducen las peticiones a la plataforma.

Para identificar lo que les estoy hablando, vamos a ver un ejemplo de como se podría desarrollar un “Upsert” en el pasado:

QueryByAttribute query = new QueryByAttribute("contact");
query.AddAttributeValue(
"dar_codigo", "1");
EntityCollection results=service.RetrieveMultiple(query);

if (results.Entities.Count == 1)
{
Entity contactoUpdate = new Entity("contact");
contactoUpdate[
"firstname"] = "1-name";
contactoUpdate.Id = results.Entities[0].Id;
service.Update(contactoUpdate);
}
else
{
Entity contactoUpdate = new Entity("contact");
contactoUpdate[
"firstname"] = "1-name";
service.Create(contactoUpdate);
}



Ahora con la nueva funcionalidad se podría hacer directamente así:




Entity contacto = new Entity("contact");
contacto.KeyAttributes.Add(
"dar_codigo", "1");


contacto["firstname"] = "1-name";
UpsertRequest req = new UpsertRequest();
req.Target = contacto;
UpsertResponse res=(UpsertResponse)service.Execute(req);



Como puede verse, es mucho mas simple, ya que en una sola llamada resolvemos todo. Obviamente nos estamos aprovechando de la  nueva funcionalidad de definición de campos clave externos: http://www.demianrasko.com/2015/03/nuevo-definicion-de-campos-clave-en.html



Finalmente la respuesta de esta mensaje que es de tipo “UpsertResponse” nos da información de si el registro se ha creado o si se ha actualizado uno existente:



image



image



Espero les sirva para hacer vuestros códigos mas limpios, eficientes y bonitos Guiño



@demian_rasko

No hay comentarios:

Publicar un comentario