using NHibernate.Tool.hbm2ddl
Una herramienta muy importante de NHibernate, a la vez, deseable por los ORM, es la generación de código.
Para generar el DDL de la base de datos, nos podemos valer de la información del esquema, que nos brindan los archivos de mapeo ó mapping files: hbm.xml.
Un vez que tenemos bien configurados estos archivos, podemos generar las tablas con solamente incluir un par de sentencias en .Net y configurar un archivo xml. Tambien se tiene que tener referenciado a NHibernate.
Código en C#:
using System; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl;
public class MyClass { public static void Main() { Configuration config = new Configuration(); config.Configure(); SchemaExport exporter = new SchemaExport(config); //exporter.SetOutputFile(@"c:testDDL.sql"); exporter.Drop(true, true); exporter.Create(true, true); } }
Archivo hibernate.cfg.xml (debe ir copiado en el directorio de salida):
<?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.0" > <session-factory name="NHibernate">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.FirebirdClientDriver</property> <property name="connection.connection_string"> ServerType=1; User=sysdba;password=masterkey;Database=C:ruraldata.fdb; Pooling=false </property> <property name="show_sql">true</property> <property name="dialect">NHibernate.Dialect.FirebirdDialect</property> <property name="use_outer_join">true</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <mapping assembly="RuralSolution.Entities" /> </session-factory> </hibernate-configuration>
En este caso es la exportación del schema de una base de datos Firebird embebida.
Esta herramienta me ha sido de mucha utilidad. Estoy desarrollando una aplicación en SQL Server 2005 y NHibernate, pero, me dí cuenta que la aplicación debía ser portable, de modo que tuve que migrar la base de datos a una portable, y como Firebird está pasando todos los test de NH, la elegí. Ya tenía los hbm, así que no requirió trabajo demás.
Importante para la generación con Firebird: en el directorio de salida entonces tendriamos que tener: fbembed.dll, FirebirdSql.Data.FirebirdClient.dll, y hibernate.cfg.xml.
Si quieren saber como trabajar con MyGeneration y Firebird embedded léanse este post de mi amigo Matias.
4 comments so far
Replica
He puesto a dispocición de la comunidad firebird, un assembly para .NET que permite obtener el schema de una base de datos FIREBIRD, de forma muy fácil.
este retorna colecciones de objetos, ya sean tablas, campos, indices, generadores, etc. con sus respectivos atributos…
en el sitio http://edurio.googlepages.com pueden encontrar el instalable de este y instrucciones hacerca de su uso…
si tienen alguna duda o recomentación, escríbanme a edurio@gmail.com
Hola Dario, te escribo porque vi un comentario tuyo en nuestro blog de Cooperator Framework.
Te cuento que hemos seguido avanzando en nuestro proyecto y pronto lo liberaremos.
Leyendo tu blog, (al cual voy a enlazar en el mio), vi que subiste un proyecto de Redes Neuronales a google usando subversion… Te queria contactar para que me cuentes como te fue usando esa plataforma..
Saludos,
Eugenio
saben me interesa aprender nhibernate,he usado hibernate en java pero en .Net todavia no entiendo bien quisiera saber cuales son los pasos para crear un proyecto con este ORM
Saludos y Gracias
Podes empezar por acá:
http://darioquintana.com.ar/articles/tutorial-de-nhibernate-primeros-pasos
Y con las preguntas podés continuar por acá:
http://groups.google.com.ar/group/NHibernate-Hispano