public static ISession GetNewSession(ISessionFactory sessionFactory, IInterceptor interceptor)
{
try
{
SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.GetResource(sessionFactory);
if (sessionHolder != null && !sessionHolder.IsEmpty)
{
if (interceptor != null)
{
return sessionFactory.OpenSession(sessionHolder.AnySession.Connection, interceptor);
}
else
{
return sessionFactory.OpenSession(sessionHolder.AnySession.Connection);
}
}
else
{
if (interceptor != null)
{
return sessionFactory.OpenSession(interceptor);
}
else
{
return sessionFactory.OpenSession();
}
}
}
catch (HibernateException ex)
{
throw new DataAccessResourceFailureException("Could not open Hibernate Session", ex);
}
}