public void Unbind(bool exception = false) { //Unbind session from current context var session = ThreadStaticSessionContext.Unbind(sessionFactory); if (session == null) { return; } try { var transaction = session.Transaction; if (TransactionWasManipulated(transaction)) { return; } if (!exception) { transaction.Commit(); } else { transaction.Rollback(); } transaction.Dispose(); } finally { session.Close(); } }
private ICurrentSessionContext BuildCurrentSessionContext() { var impl = System.Configuration.ConfigurationManager.AppSettings["sessionContextType"]; ICurrentSessionContext result = null; switch (impl) { case "CallSessionContext": result = new CallSessionContext(this); break; case "ThreadStaticSessionContext": result = new ThreadStaticSessionContext(this); break; case "WebSessionContext": result = new WebSessionContext(this); break; case "ManagedWebSessionContext": result = new ManagedWebSessionContext(this); break; } return(result); }
public ContextSessionBlock GetSessionContextBlock() { var session = sessionFactory.OpenSession(); session.BeginTransaction(); ThreadStaticSessionContext.Bind(session); var sessionBlock = new ContextSessionBlock(session); sessionBlock.SetAction(() => Unbind(sessionBlock.ExceptionThrown)); return(sessionBlock); }