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))); }
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))); }
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))); }
/// <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)); }