All pastes #71325 Raw Edit

Unnamed

public text v1 · immutable
#71325 ·published 2006-06-25 16:41 UTC
rendered paste body
using NHibernate;
using NHibernate.Mapping.Attributes;

public class NHibernateHelper {

  private static NHibernate.Cfg.Configuration _configuration = null;
  private static ISessionFactory _sessionFactory = null;
  private static ISession _session = null;

  public static NHibernate.Cfg.Configuration Configuration {
    get {
      if (_configuration == null) {
        System.IO.MemoryStream stream = new System.IO.MemoryStream();
        NHibernate.Mapping.Attributes.HbmSerializer.Default.Validate = true;

        // add every assemblies that contain entity classes
        NHibernate.Mapping.Attributes.HbmSerializer.Default.Serialize(
          stream, System.Reflection.Assembly.GetExecutingAssembly());

        stream.Position = 0;
        NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
        cfg.Configure();
        cfg.AddInputStream(stream); // Use the stream here
        stream.Close();
      }

      return _configuration;
    }
  }

  public static ISessionFactory SessionFactory {
    get {
      if (_sessionFactory == null) {
        _sessionFactory = Configuration.BuildSessionFactory();
      }
      return _sessionFactory;
    }
  }

  public static ISession Session {
    get {
      if (_session == null) {
        _session = SessionFactory.OpenSession();
        session.BeginTransaction();
      }
      return _session;
    }
  }

  public static string[] GenerateSchemaCreationSql() {
    return Configuration.GenerateSchemaCreationScript(SessionFactory.Dialect);
  }
}