using System; using System.Collections.Generic; using System.Text; using NHibernate; namespace Pcms.Classes.Base { 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(); _configuration = cfg; } 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(); } return _session; } } public static string[] GenerateSchemaCreationSql() { return Configuration.GenerateSchemaCreationScript(SessionFactory.Dialect); } } }