public class NHibernateHelper
{
private const string CurrentSessionKey = "nhibernate.current_session";
private static readonly ISessionFactory sessionFactory;
private static string dataconnect;
private static string databaseProvider = "";
static NHibernateHelper()
{
if (File.Exists("hibernate.cfg.xml"))
{
Configuration config = new Configuration().Configure("hibernate.cfg.xml");
databaseProvider = config.Properties["dialect"];
dataconnect = config.Properties["connection.connection_string"];
sessionFactory = config.BuildSessionFactory();
}
else
{//针对于B/S Web应用
Configuration config = new Configuration().Configure();
databaseProvider = config.Properties["dialect"];
dataconnect = config.Properties["connection.connection_string"];
sessionFactory = config.BuildSessionFactory();
}
// sessionFactory = new Configuration().Configure().BuildSessionFactory();
}
public static ISession GetCurrentSession()
{
ISession currentSession = sessionFactory.OpenSession();
return currentSession;
}
public static void CloseSession()
{
HttpContext context = HttpContext.Current;
ISession currentSession = context.Items[CurrentSessionKey] as ISession;
if (currentSession == null)
{
// No current session
return;
}
currentSession.Close();
context.Items.Remove(CurrentSessionKey);
}
public static void CloseSessionFactory()
{
if (sessionFactory != null)
{
sessionFactory.Close();
}
}
public static string GetDbProvider()
{
return databaseProvider;
}
}