sábado, 19 de octubre de 2013

Personalizar Una Entidad con GenCode

 

El dia de ayer, conversando con un amigo que estaba probando el GenCode, me pregunto si se podia modificar para que genere una Clase de tipo Entidad para que tenga un constructor entre otras cosas y bueno yo le propuse algo mejor. Porque no modificar el contructor y le pasamos un DataReader …. etc etc.

 

01

El tema está que solo hay que modificar el Template para las entidades, quedando de esta manera:

02

Ahora generando la clase con GenCode, obtenemos el siguiente resultado:

03

Como verán con el meta lenguaje de GenCode, podemos personalizar los templates para que genere las clases a nuestra manera de desarrollo.

Nota:  La siguiente clase NullSafe.GetValueOrDefault, es una clase para manejar el tema de los NULL, y asi no tener errores, esta clase la adapte de un codigo que encontre navegando y se los comparto:

 

using System.Data;

namespace EmsvSoftware.ERP.Common
{
    public static class NullSafe
    {
        public static T GetValueOrDefault<T>(this IDataRecord row, string fieldName)
        {
            int ordinal = row.GetOrdinal(fieldName);
            return row.GetValueOrDefault<T>(ordinal);
        }

        public static T GetValueOrDefault<T>(this IDataRecord row, int ordinal)
        {
            return (T)(row.IsDBNull(ordinal) ? default(T) : row.GetValue(ordinal));
        }
    }
}

Saludos

Eloy