MyGeneration
| ||||||||||||||||
MyGeneration. Herramienta .NET para generar código a partir de plantillas combinando un bien conocido motor de scripting con una potente API de meta-datos de base de datos, es un generador de código opensource que dispone de varias plantillas para generar las clases de acceso a datos y los archivos de configuración de NHibernate a partir de la estructura de una base de datos.
Sumario
Características
Permite crear y definir interfaces de usuario específicos para nuestras aplicaciones usando y modificando las plantillas existentes. Sin olvidar una importante comunidad de usuarios que permite obtener soporte mediante foros. El mismo creador nos brinda su propio framework de persistencia: dOOdads, para trabajar con este framework necesitamos el MyGeneration para generar todas nuestras clases y los stored procedures para los inserts, updates y deletes. Esta herramienta genera código muy legible y con una forma muy fácil de realizar consultas.
MyGeneration es muy adecuado para generar arquitecturas ORM, Opf3, NHibernate y demás. Es compatible con los formatos de Bases de Datos, Microsoft SQL, Oracle, IBM DB2, MySQL, PostgreSQL, Microsoft Access, FireBird, Interbase, SQLite y VistaDB. También puede generar código para sistemas operativos que no sean Windows, y tiene un inmensa cantidad de plantillas que generan código C# y VB.NET, PHP y HTML.
Principalmente está orientado a la tecnología .Net de Microsoft ya que permite crear código en JScript, VBScript, C# y VB.NET. Con esta herramienta es mucho más sencillo crear y mantener una capa de persistencia de datos adaptada a nuestra aplicación. Capacidad de crear su propia interfaz de usuario integrado en sus plantillas Biblioteca de plantillas en línea para la publicación y descarga de plantillas
Arquitecturas que soporta
- dOOdads
- EntitySpaces
- EasyObjects.NET/EntLib
- Gentle.NET
- Opf3
- NHibernate
- Microsoft’s DAAB
- DotNetNuke
- iBatis
Soporte para Base de Datos
- Microsoft SQL Server
- Oracle
- IBM DB2
- PostgreSQL
- Microsoft Access
- FireBird
- Interbase
- VistaDB
- SQLite
- MySQL
- Advantage
- Pervasive
Funcionamiento
Pasos para que funcione:
- Descargar e instalar MyGeneration
- Una vez instalado el programa necesitaras tener una base de datos lista para mapear hacia objetos.
- La arquitectura de dOOdads tiene los siguientes módulos: un proyecto que tiene las clases bases que van a implementarse luego por el generador de código, los procedimientos almacenados que utilizan las clases para guardarse en la base de datos, un conjunto de vistas en la base de datos que debes crear para utilizar datos relacionados de forma eficiente.
- Entonces para que esto ande primero tenemos que agregar a nuestro proyecto el proyecto de arquitectura de dOOdads, el mismo se encuentra en C:\Program Files\MyGeneration\Architectures\dOOdads\CSharp para la version C#.
- Una vez que elegimos cual es la base de datos a usar tenemos que marcar la clases de la carpeta C:\ProgramFiles\MyGeneration\Architectures\dOOdads\CSharp\MyGeneration.dOOdads\DbAdapters que vamos a usar (ver los prefijos) para que compilen. Para ello la seleccionamos y en el cuadro de propiedades la marcamos para incluirla en el build.
- Una vez que tenemos el proyecto referenciado, vamos a generar nuestras clases de negocio. Para ello iniciamos mygeneration configuramos la cadena de conexión hacia la base de datos que vamos a mapear y procedemos a buscar en el árbol de la izquierda los templates a usar.
- Para crear las clases de negocios usamos el template dOOdads Business Entity que se encuentra bajo la rama c# de dOOdas. Este template les genera clases abstractas, si quieren las concretas también hay que hacerlo con el mismo método.
- También necesitamos crear los procedimientos almacenados para eso elegimos la base de datos correspondiente en el árbol de template (por ejemplo Microsoft SQL Server) y corremos el template de dOOdads Stored Procedures. Esto escupe un montón de stores por cada tabla que son necesarios para correr las clases generadas por MyGeneration. TIP: si a cada columna le agregan un campo RowVersion de tipo timestamp, el template va a utilizarla para manejar la concurrencia de los updates y puede llegar a generarles una sentencia TSEQUAL que no compila en 2005, no se hagan drama cámbienlo por un igual y sale con fritas.
- Agregamos todo el código generado a nuestra solución de C#
- Configuramos TransactionMgr para que obtenga una query string válida para nuestro aplicativo en la función private IDbConnection CreateSqlConnection(BusinessEntity entity), donde pueden traerla directamente del app.config o web.config.
Con dOOdads
Probando con dOOdads, que por medio de una jerarquía de herencia permite crear clases que mapean contra las tablas de tu base de datos para que después puedas usarlas de esta forma:
// Load and Save Employees emps = new Employees(); if(emps.LoadByPrimaryKey(42)) { emps.LastName = "Just Got Married"; emps.Save(); }
// Add a new record Employees emps = new Employees(); emps.AddNew(); emps.FirstName = "Mr."; emps.LastName = "dOOdad"; emps.Save();
// After save the identity column is already here for me. int i = emps.EmployeeID;