Example #1
0
        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();
            }
        }
Example #2
0
        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);
        }
Example #3
0
        public ContextSessionBlock GetSessionContextBlock()
        {
            var session = sessionFactory.OpenSession();

            session.BeginTransaction();
            ThreadStaticSessionContext.Bind(session);

            var sessionBlock = new ContextSessionBlock(session);

            sessionBlock.SetAction(() => Unbind(sessionBlock.ExceptionThrown));

            return(sessionBlock);
        }