Ejemplo n.º 1
0
        private ISqlSessionHandler GetSessionHandler(bool hasTransaction, out ISqlSessionFactory sqlSessionFactory,
                                                     out ISqlSession sqlSession)
        {
            sqlSessionFactory = Substitute.For <ISqlSessionFactory>();
            var sessionHandler = new SqlSessionHandler(sqlSessionFactory);

            sqlSession = Substitute.For <ISqlSession>();
            sqlSessionFactory.CreateSqlSession().Returns(sqlSession);
            sqlSession.HasTransaction.Returns(hasTransaction);
            return(sessionHandler);
        }
Ejemplo n.º 2
0
        public TResult Query <TResult>(IQuery <TResult> query)
        {
            var hasSession = HasSession();

            if (!hasSession)
            {
                _session = CreateSqlSession();
            }
            var hasTransaction = _session.HasTransaction;

            if (!hasTransaction)
            {
                _session.Begin();
            }
            try
            {
                var result = query.Execute(Connection, Transaction);
                if (!hasTransaction)
                {
                    _session.Commit();
                }
                return(result);
            }
            catch
            {
                if (!hasTransaction)
                {
                    _session.SqlTransaction.Rollback();
                }
                throw;
            }
            finally
            {
                if (!hasSession)
                {
                    _session.Dispose();
                    _session = null;
                }
            }
        }
Ejemplo n.º 3
0
        public TResult RepoQuery <TResult>(Func <TResult> writeAction)
        {
            var sessionHandeledOutside = HasSession();

            if (!sessionHandeledOutside)
            {
                _session = CreateSqlSession();
            }
            var transactionHandeledOutside = _session.HasTransaction;

            if (!transactionHandeledOutside)
            {
                _session.Begin();
            }
            try
            {
                var result = writeAction();
                if (!transactionHandeledOutside)
                {
                    _session.Commit();
                }
                return(result);
            }
            catch
            {
                if (!transactionHandeledOutside)
                {
                    _session.SqlTransaction.Rollback();
                }
                throw;
            }
            finally
            {
                if (!sessionHandeledOutside)
                {
                    _session.Dispose();
                    _session = null;
                }
            }
        }
Ejemplo n.º 4
0
 public override void CloseSession(ISqlSession sqlSession)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 5
0
 public override Task <T> QueryAsyncForObjectSession <T>(string v, string supplierId, ISqlSession session)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 6
0
 public ISqlSession CreateSqlSession()
 {
     _session = _sqlSessionFactory.CreateSqlSession();
     return(_session);
 }