public override async Task <IEnumerable <T> > GetPagerListAsync <T>(string condition, string sort, int pageIndex, int pageSize, string filter = "*", DbParameter[] conditionParameters = null) { var lstResult = new List <T>(); T tItem = default(T); string tableName = AttrAssistant.GetTableName(typeof(T)); //表名 if (condition.IsNullOrEmpty()) { condition = "1=1"; } //起始记录 int startPosition = (pageIndex - 1) * pageSize; //比如第一页是从0开始,而不是1,和sqlserver不同 var builder = new StringBuilder(); //limit 起始行(包括),记录数 builder.AppendFormat(@"select {0} from {1} as {6} {2} {3} limit {4},{5}", filter, tableName, condition.IsNullOrEmpty() ? "" : " where " + condition, sort.IsNullOrEmpty() ? "" : " order by " + sort, startPosition, pageSize, Utils.SinGooPagerAlias); var reader = await GetDataReaderAsync(builder.ToString(), conditionParameters); var refBuilder = ReflectionBuilder <T> .CreateBuilder(reader); while (reader.Read()) { tItem = refBuilder.Build(reader, dbProviderType); lstResult.Add(tItem); } reader.Close(); return(lstResult); }
public override IEnumerable <T> GetPagerList <T>(string condition, string sort, int pageIndex, int pageSize, string filter = "*", DbParameter[] conditionParameters = null) { var lstResult = new List <T>(); T tItem = default(T); string tableName = AttrAssistant.GetTableName(typeof(T)); //表名 if (string.IsNullOrEmpty(condition)) { condition = "1=1"; } //起始记录(不包括) int startPosition = (pageIndex - 1) * pageSize; StringBuilder builder = new StringBuilder(); //offset代表从第几条记录“之后“开始查询,limit表明查询多少条结果 builder.AppendFormat(@"select {0} from {1} as {6} {2} {3} limit {4} offset {5}", filter, tableName, condition.IsNullOrEmpty() ? "" : " where " + condition, sort.IsNullOrEmpty() ? "" : " order by " + sort, pageSize, startPosition, Utils.SinGooPagerAlias); var reader = GetDataReader(builder.ToString(), conditionParameters); var refBuilder = ReflectionBuilder <T> .CreateBuilder(reader); while (reader.Read()) { tItem = refBuilder.Build(reader, dbProviderType); lstResult.Add(tItem); } reader.Close(); return(lstResult); }
public override async Task <IEnumerable <T> > GetPagerListAsync <T>(string condition, string sort, int pageIndex, int pageSize, string filter = "*", DbParameter[] conditionParameters = null) { if (sort.IsNullOrEmpty()) { throw new ArgumentNullException("sort"); //sort参数必填 } var lstResult = new List <T>(); T tItem = default(T); string tableName = AttrAssistant.GetTableName(typeof(T)); //表名 if (condition.IsNullOrEmpty()) { condition = "1=1"; } //起始记录 int startPosition = (pageIndex - 1) * pageSize + 1; int offsetPosition = (pageIndex - 1) * pageSize; //截止记录 int endPosition = pageIndex * pageSize; var builder = new StringBuilder(); if (dbVersionNo >= 11) { //sqlserver2012及以上可用 builder.AppendFormat(@"select {0} from {1} as {6} where {2} order by {3} offset {4} rows fetch next {5} rows only", filter, tableName, condition, sort, offsetPosition, pageSize, Utils.SinGooPagerAlias); } else { //sqlserver2005及以上可用 builder.AppendFormat(@"select {0} from(select row_number() over(order by {3}) as rownum,* from {1} where {2} ) as {6} where rownum between {4} and {5} order by {3}", filter, tableName, condition, sort, startPosition, endPosition, Utils.SinGooPagerAlias); } var reader = await GetDataReaderAsync(builder.ToString(), conditionParameters); var refBuilder = ReflectionBuilder <T> .CreateBuilder(reader); while (reader.Read()) { tItem = refBuilder.Build(reader, dbProviderType); lstResult.Add(tItem); } reader.Close(); return(lstResult); }
public virtual T GetModel <T>(IDataReader reader) where T : class { var model = default(T); var builder = ReflectionBuilder <T> .CreateBuilder(reader, dbProviderType); while (reader.Read()) { model = builder.Build(reader, dbProviderType); break; //只取一个 } reader.Close(); return(model); }
public virtual async Task <IEnumerable <T> > GetListAsync <T>(string sql, DbParameter[] parameters = null) where T : class { var lstResult = new List <T>(); var reader = await GetDataReaderAsync(sql, parameters); var builder = ReflectionBuilder <T> .CreateBuilder(reader, dbProviderType); while (reader.Read()) { T tItem = builder.Build(reader, dbProviderType); lstResult.Add(tItem); } reader.Close(); return(lstResult); }
public static IAccessor <T> Apply <T, K>(this IAccessor <T> accessor, Expression <Func <IReturnableMember <T>, K> > returner, Expression <Action <IApplicableMember <K> > > actor) { if (accessor == null) { throw new NullReferenceException(); } if (returner == null) { throw new ArgumentNullException("returner"); } if (actor == null) { throw new ArgumentNullException("actor"); } return(new AccessorImpl <T>(ApplyCore <T, K>(accessor.Expression, ReflectionBuilder.ReturnableMember <T, K>(returner), ReflectionBuilder.ApplicableMember <K>(actor)))); }
public static IAccessor <T> Assign <T, K>(this IAccessor <T> accessor, Expression <Func <IAssignableMember <T>, K> > assigner, ICreator <K> creator) { if (accessor == null) { throw new NullReferenceException(); } if (assigner == null) { throw new ArgumentNullException("assigner"); } if (creator == null) { throw new ArgumentNullException("creator"); } return(new AccessorImpl <T>(AssignCore <T, K>(accessor.Expression, ReflectionBuilder.AssignableMember <T, K>(assigner), Expression.Lambda <Func <T, K> >(creator.Expression.Body, Expression.Parameter(typeof(T)))))); }
public static IAccessor <T> Assign <T, K>(this IAccessor <T> accessor, Expression <Func <IAssignableMember <T>, K> > assigner, Expression <Func <IValue <T>, K> > parameter) { if (accessor == null) { throw new NullReferenceException(); } if (assigner == null) { throw new ArgumentNullException("assigner"); } if (parameter == null) { throw new ArgumentNullException("parameter"); } return(new AccessorImpl <T>(AssignCore <T, K>(accessor.Expression, ReflectionBuilder.AssignableMember <T, K>(assigner), ReflectionBuilder.GetParameter <T, K>(parameter)))); }
public override async Task <IEnumerable <T> > GetPagerListAsync <T>(string condition, string sort, int pageIndex, int pageSize, string filter = "*", DbParameter[] conditionParameters = null) { var lstResult = new List <T>(); T tItem = default(T); string tableName = AttrAssistant.GetTableName(typeof(T)); //表名 if (string.IsNullOrEmpty(condition)) { condition = "1=1"; } //起始记录 int startPosition = (pageIndex - 1) * pageSize + 1; //截止记录 int endPosition = pageIndex * pageSize; StringBuilder builder = new StringBuilder(); builder.AppendFormat(@"select {0} from ( select t.*,rownum as rowno from ( select * from {1} {2} {3} ) t where rownum<={5} ) {6} where rowno>={4}", filter, tableName, condition.IsNullOrEmpty() ? "" : " where " + condition, sort.IsNullOrEmpty() ? "" : " order by " + sort, startPosition, endPosition, Utils.SinGooPagerAlias); var reader = await GetDataReaderAsync(builder.ToString(), conditionParameters); var refBuilder = ReflectionBuilder <T> .CreateBuilder(reader, dbProviderType); while (reader.Read()) { tItem = refBuilder.Build(reader, dbProviderType); lstResult.Add(tItem); } reader.Close(); return(lstResult); }
public static ICopier <T, R> Copy <T, R, K>(this ICopier <T, R> copier, Expression <Func <IReturnableMember <T>, K> > source, Expression <Func <IAssignableMember <R>, K> > target) { return(new CopierImpl <T, R>(CopyCore <T, R, K>(copier.Expression, ReflectionBuilder.ReturnableMember <T, K>(source), ReflectionBuilder.AssignableMember <R, K>(target)))); }
public static IConverter <T, N> Convert <T, R, N>(this IConverter <T, R> converter, Expression <Action <IConstructibleMember <N> > > constructMember) { return(new ConverterImpl <T, N>(ConvertCore(converter.Expression, ReflectionBuilder.ConstructibleMember <N>(constructMember)))); }
public static IConverter <T, N> Convert <T, R, N>(this IConverter <T, R> converter, Expression <Func <IReturnableMember <R>, N> > returnMember) { return(new ConverterImpl <T, N>(SelectCore(converter.Expression, ReflectionBuilder.ReturnableMember <R, N>(returnMember)))); }
public static IConverter <T, R> Convert <T, R>(this IAccessor <T> accessor, Expression <Action <IConstructibleMember <R> > > constructMember) { return(new ConverterImpl <T, R>(ConvertCore(accessor.Expression, ReflectionBuilder.ConstructibleMember <R>(constructMember)))); }
public static IConverter <T, R> Convert <T, R>(this IAccessor <T> accessor, Expression <Func <IReturnableMember <T>, R> > returnMember) { return(new ConverterImpl <T, R>(SelectCore(accessor.Expression, ReflectionBuilder.ReturnableMember <T, R>(returnMember)))); }
public static ICreator <T> Create <T>(this IAccessor <T> accessor, Expression <Action <IConstructibleMember <T> > > constructMember) { return(new CreatorImpl <T>(CreateCore <T>(accessor.Expression, ReflectionBuilder.ConstructibleMember <T>(constructMember)))); }
public static IAccessor <T> Return <T, K>(this IAccessor <T> accessor, Expression <Func <T, K> > selector, Expression <Func <IValue <T>, K> > parameter) { if (accessor == null) { throw new NullReferenceException(); } if (selector == null) { throw new ArgumentNullException("selector"); } if (parameter == null) { throw new ArgumentNullException("parameter"); } return(new AccessorImpl <T>(ReturnCore <T, K>(accessor.Expression, selector, ReflectionBuilder.GetParameter <T, K>(parameter)))); }