29 agosto 2013

Constructor en un DataContract

Hoy necesitaba inicializar un atributo de una clase de un DataContract y intuitivamente la forma de hacerlo sería inicializando esa variable en el constructor de la clase. Como por ejemplo:
[DataContract]
public class Person
{
     private string _Name;

     public Person()
     {
          this.Name = "No Name";
     }

     [DataMember]
     public string Name
     {
          get { return _Name; }
          set { _Name = value; }
      }
}

Bueno pues esto no funciona. En la deserialización nunca se llaman a constructores.

Así que para solucionar esto he encontrado este maravilloso POST donde explican los eventos que ocurren en la deserialización y cómo usar los deserialization callbacks podía ser de ayuda en la resolución del problema. Así que solo necesitaba inicializar los valores que necesitaba en el evento OnSerializing.

Eventos en la serialización

Así nuestro código ahora funcional quedaría:
[DataContract]
public class Person
{
    private string _Name;
  
 [OnDeserializing]
 void OnDeserializing(StreamingContext context)
 {
  this.Name = "No Name";
 }

     [DataMember]
     public string Name
 {
  get { return _Name; }
  set { _Name = value; }
 }
}


21 agosto 2013

Resumen del Dynamics 2013 Training Blitz Day

El 31 de Julio Microsoft organizo un evento llamado Training Blitz Day para todos sus partners. Había dos conferencias a la vez y desde Innovar asistimos a la “Technical Overview for Application Consultants, Presales Consultants and Developers”.

La charla fué dirigida por Eric Boocock y Girish Raja y se habló de lo siguientes temas:


  • Nueva experiencia de usuario.
  • Procesos ágiles.
  • Microsoft Dynamics CRM 2013 aplicación para móviles.
  • Integración con Yammer.
  • Sincronización de CRM 2013 con Outlook y Exchange .
  • Portal de administración de Microsoft Online.
  • Procesos actualizados.
  • Reglas de negocio.
  • Client Extensibility in Microsoft Dynamics CRM 2013
  • Extensibility on the Server and Cloud with Dynamics CRM
  • Microsoft Dynamics CRM as a Platform for Business Apps
Requisitos de MS Dynamics CRM 2013

Experiencia de Usuario

Estructura de los nuevos formularios:


App de Windows Phone:

App de iPad y características de la aplicación móvil.
Soportará formularios customs. Aunque tendrá limites: 5 tabs o 100 campos y 10 listas. No se admitirán webresources. Solo para IFD.

Crear rápidamente con la nueva "ribbon":

Formulario con alertas:

Como usar Yammer. Colaboración entre usuarios de CRM.

Los problemas enviando emails solucionados con Server-Side Sync.
Se ha de tener en cuenta que si tienes un CRM online entonces no podrás tener un Exchange On-premise y viceversa.

Administración de campañas con Marketing Pilot incluso en Facebook y Twitter 
Más screenshots de Marketing Pilot aquí.


Otras novedades:
  • Left Outer Join con FetchXML.
  • Todas las entidades incluyendo Contactos, Cuentas y Leads podrán tener imagenes o fotos.
La nueva característica que más nos gustó de MS Dynamics 2013 son las Business Rules y los Real-Time Workflows ya que facilitarán algunas de las customizaciones más comunes a golpe de click. 
Real-time workflows
Por último nos disiparon las dudas con los formularios actuales ya que se mantendrán en el CRM 2013.