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); } }