public ISession GetCurrentSessionInput()
        {
            ISession currentSession;
            var      sessionFactory = SessionFact.GetSessionFactInput();

            currentSession = sessionFactory.OpenSession();

            //if (CurrentSessionContext.HasBind(sessionFactory))
            //{
            //    currentSession =sessionFactory.GetCurrentSession();
            //}
            //else
            //{
            //    currentSession =sessionFactory.OpenSession();
            //    CurrentSessionContext.Bind(currentSession);
            //}
            return(currentSession);
        }
        public static void DisposeCurrentSession()
        {
            var factory = SessionFact.GetSessionFact();
            var session = CurrentSessionContext.Unbind(factory);

            if (session != null && session.IsOpen)
            {
                try
                {
                    if (session.Transaction != null && session.Transaction.IsActive)
                    {
                        session.Transaction.Rollback();
                        throw new Exception("Rolling back uncommited NHibernate transaction.");
                    }
                    session.Flush();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("SessionKey.EndContextSession", ex);
                    throw;
                }
                finally
                {
                    session.Close();
                    session.Dispose();
                }
            }

            var factoryInput = SessionFact.GetSessionFactInput();
            var sessionInput = CurrentSessionContext.Unbind(factoryInput);

            if (sessionInput != null && sessionInput.IsOpen)
            {
                try
                {
                    if (sessionInput.Transaction != null && sessionInput.Transaction.IsActive)
                    {
                        sessionInput.Transaction.Rollback();
                        throw new Exception("Rolling back uncommited NHibernate transaction.");
                    }
                    session.Flush();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("SessionKey.EndContextSession", ex);
                    throw;
                }
                finally
                {
                    sessionInput.Close();
                    sessionInput.Dispose();
                }
            }

            var factoryOutPut = SessionFact.GetSessionFactOutput();
            var sessionOutPut = CurrentSessionContext.Unbind(factoryOutPut);

            if (sessionOutPut != null && sessionOutPut.IsOpen)
            {
                try
                {
                    if (sessionOutPut.Transaction != null && sessionOutPut.Transaction.IsActive)
                    {
                        sessionOutPut.Transaction.Rollback();
                        throw new Exception("Rolling back uncommited NHibernate transaction.");
                    }
                    sessionOutPut.Flush();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("SessionKey.EndContextSession", ex);
                    throw;
                }
                finally
                {
                    session.Close();
                    session.Dispose();
                }
            }
        }