T4 code generation: C# Entities, BLL, DAL and SQL

Cansado de escribir tanto código repetitivo y propenso a errores, decidí probar la “generación de código”.

Y siguiendo mi lema, “si quieres que algo salga bien, hazlo tú mismo”, investigué sobre T4: Text Template Transformation Toolkit. Funciona con Visual Studio 2008 y 2010 y permite generar código fuente C#, VB, SQL, HTML, incluso creo que podría generar código Java.

En este caso específico, la solución genera código SQL y C# basado en una base de datos SQL existente.

  1. SQL: 5 procedimientos almacenados por cada tabla (insertar, actualizar, eliminar, seleccionar y listar datos paginados). Incluye prefijos para los parámetros y los nombres de los procedimientos.
  2. C#: genera las Entidades del Negocio, la capa de Acceso a Datos y la de Lógica del Negocio. Hace referencia a un mini-ORM, que elaboré a la medida. También genera una clase “Populate”, que permite convertir un DataReader en una Entidad, sin usar Reflection, o sea, “hard-coded”, lo cual es tedioso, por eso decidí generarlo también.

El código hace uso intensivo de DLL’s como: Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo y Microsoft.SqlServer.Management.Sdk.Sfc para acceder a la MetaData de la base de datos.

Importante: incluye una plantilla llamada “DBSchema.tt”, la cual descargué de CodePaste.Net, aquí. Muy interesante, pero no la uso, ya que me decanto por Reflection (cacheado, obviamente).

Descargar el código de ejemplo

T4 tiene mucho potencial, y creo que de ahora en adelante lo usaré más seguido. Pero primero, migraré esto a Oracle.

También publiqué una respuesta al respecto en Stackoverflow.com

Referencias:

Existing T4 database helpers for DB schema retrieval

Prevent T4 template from deleting existing files

Code Generators or T4 Templates, are they really evil?

How to use T4 to generate CRUD stored procedures

T4 (Text Template Transformation Toolkit) Code Generation – Best Kept Visual Studio Secret

Code Generation and T4 Text Templates

tangible T4 Editor plus modeling tools for VS2010

T4 Preprocessed Text Templates in Visual Studio 2010

Generating Files with the TextTransform Utility

8 responses to this post.

  1. Hola, muy interesante el T4 y tu articulo, me gustaria ver el código pero des afortunadamente no puedo descargarlo , lo podrías subir nuevamente o mandarlo por e mail, muchas gracias

    Responder

  2. Muchas gracias por compartir, yo en este momento estoy creando algunas T4 para generar código del lado de la aplicación, estoy seguro que mirando tu código podre tomar algunas ideas o depurar mi código (Si es que no hay problema). En cuanto tenga código estable lo comparto en este Blog,

    Les platico un poco de lo que hace y me dicen que opinan va??, En este momento tengo una capa de acceso a datos la cual funciona con los patrones active table, active record, singleton y abstract factory, Por lo que en el futuro podrá trabajar en diversas bases de datos, en cantidad y tipo,

    Tengo una capa de concurrencia, con ayuda de T4 se generan métodos de extencion usados para invocar los SP’S, también se crean entidades (clases) con los parámetros de los SP’S. con esto e conseguido que los SP’S que ejecutan inserts, updates y deletes, se puedan encadanar sin la necesidad de generar el código para iterar.

    List lInsertCoupon = new List();

    lInsertCoupon.Add(6, “1256”, true)
    .Add(6, “6455”, false)
    .Exe();

    Los procedimientos almacenados que regresan ResultSets se invocan con métodos genéricos y regresan listas del tipo de objeto indicado.

    List lBanner = clsC.getBanner(new clsBanner());

    Estas llamadas a los métodos se realiza desde la capa de negocios.

    Me imagino que ustedes tienen expertis mas fuerte con T4 que yo en este momento, Me gustaría haber si se pueden que me platicaran algunas ideas o cosas que creado con T4 por que en este momento como que no tengo mucha imaginación que digamos jajajaja.

    Saludos y gracias por el codigo.

    Responder

  3. […] I’ve used T4 templates to generate Entities, DAL and Business Logic Layer. […]

    Responder

  4. Posted by Ralph on 15 junio, 2012 at 7:52

    Interesante artículo. En la empresa en la que trabajo apostamos por la generación de código desde hace años.

    Tenemos una extensión de Visual Studio llamada http://www.radarc.net, que genera código a partir de un modelo de entidades (EF). Es gratuita para uso personal.

    Podéis generar aplicaciones completas ASP.NET MVC, Webforms, Azure y WP7.

    Echadle un vistazo y nos decís que os parece.

    Gracias!

    Responder

  5. Posted by Matt on 17 abril, 2013 at 0:46

    Where do I get your t4 templates for BLL, DAL and SQL?
    Your link is broken

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: