segunda-feira, 1 de maio de 2017

C# - NHibernateHelper

Abaixo será apresentado como fazer conexão.

Classe NHibernateHelper.cs


 public static class NHibernateHelper
    {
       
 private static string StringConexao = "coloque aqui sua string de conexão";
        private static ISessionFactory _sessionFactory;

        public static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                    Configurar();
                return _sessionFactory;
            }
        }

        public static void Configurar()
        {
            FluentConfiguration configuracao = Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2012
                .ConnectionString(StringConexao)
                .ShowSql())
                .Mappings(c => c.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
                .ExposeConfiguration(c => new SchemaUpdate(c).Execute(true, true));

            _sessionFactory = configuracao.BuildSessionFactory();
        }
        public static ISession AbrirSessao()
        {
            return _sessionFactory.OpenSession();
        }      
    }

Vamos agora criar método Inserir a qual fará chamada à nossa classe NHibernateHelper.


 public void Inserir(T entidade)
        {
            using (ISession session = NHibernateHelper.AbrirSessao())
            {
                using (ITransaction transacao = session.BeginTransaction())
                {
                    try
                    {
                        session.Save(entidade);
                        transacao.Commit();
                    }
                    catch (Exception ex)
                    {
                        if (!transacao.WasCommitted)
                        {
                            transacao.Rollback();
                        }
                        throw new Exception("Erro ao inserir registro. " + ex.Message);
                    }
                }
            }
        }