Example #1
0
        public static IList <IDataReader> GetShardingDataReaderList(IList <Statement> statements)
        {
            var dataReaders = new List <Func <IDataReader> >();

            for (Int32 i = 0; i < statements.Count; i++)
            {
                Statement statement = statements[i];
                dataReaders.Add(() => DatabaseBridge.Instance.ExecuteReader(statement));
            }

            return(ExecuteParallelHelper.ParallelExcuter(dataReaders, CheckSameShard(statements)));
        }
Example #2
0
        private static IList <DataSet> GetShardingDataSetList(IList <Statement> statements)
        {
            var dataSets = new List <Func <DataSet> >();

            for (Int32 i = 0; i < statements.Count; i++)
            {
                Statement statement = statements[i];
                dataSets.Add(() => DatabaseBridge.Instance.ExecuteDataSet(statement));
            }

            return(ExecuteParallelHelper.ParallelExcuter(dataSets, CheckSameShard(statements)));
        }
Example #3
0
        public static IList <object> ExecuteShardingScalar(IList <Statement> statements)
        {
            if (statements == null || statements.Count == 0)
            {
                return(null);
            }

            var funcs = new List <Func <object> >();

            for (Int32 i = 0; i < statements.Count; i++)
            {
                Statement statement = statements[i];
                funcs.Add(() => DatabaseBridge.Instance.ExecuteScalar(statement));
            }

            return(ExecuteParallelHelper.ParallelExcuter(funcs, CheckSameShard(statements)));
        }
Example #4
0
        /// <summary>
        /// 表结构均相同, 只有一个数据库,将一个表分为多个名称不同的表
        /// </summary>
        /// <param name="statements"></param>
        /// <returns></returns>
        public static DataTable ExecuteShardTable(IList <Statement> statements)
        {
            if (statements == null || statements.Count == 0)
            {
                return(null);
            }

            var excuter = new List <Func <IDataReader> >();

            for (Int32 i = 0; i < statements.Count; i++)
            {
                Statement statement = statements[i];
                excuter.Add(() => DatabaseBridge.Instance.ExecuteReader(statement));
            }

            var result = ExecuteParallelHelper.ParallelExcuter(excuter, CheckSameShard(statements));

            return(MergeDataReader(result));
        }