/* mcs Main.cs -r:CS.dll -r:NHibernate.dll -r:Castle.DynamicProxy.dll -r:HashCodeProvider.dll -r:Iesi.Collections.dll -r:log4net.dll /resource:KeySet.hbm.xml /resource:Keyword.hbm.xml */ using System; using System.Collections; using CS; using NHibernate.Cfg; using NHibernate; public class MainClass { public static void Main(string[] args) { //ETAPA 1 - cria o objeto de configuração do NHibernate que é responsável e tem o conhecimento //sobre todos os mapeamentos que existem entre os objetos do nosso sistema e a Base de Dados: Configuration cfg = new Configuration(); cfg.AddAssembly("CS"); cfg.AddXmlFile("KeySet.hbm.xml"); cfg.AddXmlFile("Keyword.hbm.xml"); //ETAPA 2 - O objeto de ISession representa uma conexão com a sua Base de Dados e o ITransaction //representa uma transação controlada também pelo NHibernate: ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); ITransaction transaction = session.BeginTransaction(); Keyword keyword1 = new Keyword(); keyword1.Id = 1; keyword1.Name = "palavra1"; KeySet keyset1 = new KeySet(); keyset1.Id = 2; keyset1.Name = "gramatica1"; keyset1.Keys.Add( keyword1, keyword1 ); try { session.Save( keyword1 ); session.Flush(); session.Save( keyset1 ); session.Flush(); transaction.Commit(); } catch ( Exception e ) { if ( transaction != null ) transaction.Rollback(); throw e; } finally { session.Close(); } } }