110,500
社区成员
发帖
与我相关
我的任务
分享
public class SessionFactory
{
private static ISession _session = null;
private static ISessionManage _sessionManage = null;
#region[这里不需要重新设置config文件]
//public static string CfgFileName { get; set; }
#endregion[]
static SessionFactory()
{
Init();
}
/// <summary>
/// 获取实现NHibernate.ISession接口的Session实例
/// </summary>
/// <returns>返回实现NHibernate.ISession接口的类实例</returns>
//[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.Synchronized)]
public static ISession GetSession()
{
_session = _sessionManage.Get();
if (_session == null)
{
#region[结果这里就成了null]
//NHibernateSession.CfgFileName = CfgFileName;
#endregion
_session = NHibernateSession.GetNHibernateSession();
_sessionManage.Set(_session);
}
if (!_session.IsOpen)
{
#region[这里也跟着出错了]
//NHibernateSession.CfgFileName = CfgFileName;
#endregion
_session = NHibernateSession.GetNHibernateSession();
_sessionManage.Set(_session);
}
if (!_session.IsConnected) _session.Reconnect();
if (_session.Connection.State == ConnectionState.Closed)
{
_session.Connection.Open();
}
else if (_session.Connection.State == ConnectionState.Broken)
{
_session.Connection.Close();
_session.Connection.Open();
}
return _session;
}
public static void CloseSession()
{
ISession s = GetSession();
if (s != null)
{
s.Close();
}
_sessionManage.Set(null);
}
private static void Init()
{
//CfgFileName = AppConst.ServerDataCfg;
System.Reflection.Assembly ass = System.Reflection.Assembly.Load(SessionConfigManage.AssemblyName);
_sessionManage = (ISessionManage)ass.CreateInstance(SessionConfigManage.SessionSourceItemName);
}
}