public int Execute(T obj, string sql, object par)
        {
            var conn = GetConn(obj);

            return(conn.Execute(sql: sql, param: par, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn)));
        }
        public R Get <R>(T obj, string sql, object par)
        {
            var conn = GetConn(obj);

            return(conn.QueryFirstOrDefault <R>(sql: sql, param: par, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn)));
        }
        public Paging <R> GetPaging <R>(ISelectResult <R> query)
        {
            var lst   = GetList(query);
            var conn  = GetConn(null);
            var count = conn.QuerySingleOrDefault <long>(sql: query.CountSqlCmd, param: query.Param, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn));

            return(new Paging <R>(count, lst));
        }
        public List <R> GetList <R>(ISelectResult <R> query)
        {
            Type            typeFromHandle = typeof(R);
            ConstructorInfo right          = typeFromHandle.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FirstOrDefault((ConstructorInfo x) => x.GetParameters().Length == 0);
            var             conn           = GetConn(query.DBModel as T);

            if (null == right && typeFromHandle.FullName.Contains("AnonymousType"))
            {
                using (IDataReader reader = conn.ExecuteReader(sql: query.SqlCmd, param: query.Param, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn)))
                {
                    return(GetList(reader.Parse <R>().ToList()));
                }
            }

            return(GetList(conn.Query <R>(sql: query.SqlCmd, param: query.Param, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn))));
        }
        public List <R> GetList <R>(T obj, string sql, object par)
        {
            var conn = GetConn(obj);

            return(GetList(conn.Query <R>(sql: sql, param: par, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn))));
        }
        public List <T> GetList(string sql, object par)
        {
            var conn = GetConn(null);
            var lst  = conn.Query <T>(sql: sql, param: par, commandTimeout: CommandTimeout, transaction: DBTool.GetTransaction(conn));

            return(GetList(lst));
        }