msgbartop
Around Software Development and Innovation
msgbarbottom

27 Feb 11 Creare il DB dalle classi e dai mappings con NHibernate(Real Domain Driven Design)

Vi riporto un pò di codice per la generazione dello schema del db a partire dalle classi di dominio ed i mapping di NHibernate. Questo a mio parere è il primo punto da cui partire per fare un vero progetto basato su Domani Driven Design:

using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using System.Threading;
using System.Configuration;
using NHibernateConfig.Common.Configuration;
using NHibernate.Tool.hbm2ddl;

namespace Gestio.DataLayer.Nhibernate.Provider
{
public sealed class NHibernateHelper
{
private const string CurrentSessionKey = “nhibernate.current_session”;
private static readonly ISessionFactory sessionFactory;
private static NHibernate.Cfg.Configuration cfg;

static NHibernateHelper()
{
if(sessionFactory==null){
cfg = new NHibernate.Cfg.Configuration();
cfg.AddAssembly(“Gestio.NHibernate.Mappings”);

try
{
sessionFactory = cfg.BuildSessionFactory();
}
catch (Exception e)
{
throw new Exception(” Can not create session factory! ” + e.Message, e.InnerException);
}
}
}

public static ISession GetCurrentSession()
{
ISession currentSession=sessionFactory.OpenSession();
return currentSession;
}

public static void CloseSessionHelper()
{
sessionFactory.Close() ;
}

///Create database
public static void CreateDB()
{
NHibernate.Tool.hbm2ddl.SchemaExport obj=new SchemaExport(cfg,null);
System.Data.IDbConnection dbconn = new System.Data.SqlClient.SqlConnection(“Data Source=ciuccio;Initial Catalog=test;User Id=sa;Password=pippo”);
dbconn.Open();
obj.Execute(true,true,false,false,dbconn,null);
dbconn.Close();
}

}
}

Bye

Antonio

Leave a Comment