/// <summary> /// 得到主键的列名和参数名 /// </summary> static private string GetKeysParamNames(Type tmodel, string paramPrefix) { var keys = DbMetaDataManager.GetKeys(tmodel); var values = String.Join(" And ", keys.Select(f => f + "=" + paramPrefix + f) ); return(values); }
/// <summary> /// 返回分页数据 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="query"></param> /// <param name="pageIndex">第几页</param> /// <param name="pageSize">共几页</param> /// <returns>延时执行查询,在调用时</returns> public static IEnumerable <TModel> GetPager <TModel>(this SelectQuery <TModel> query, int pageIndex, int pageSize) { query.SqlBuilder.Clear(); query.SqlBuilder.IsFunction = true; var tableName = DbMetaDataManager.GetTableName(typeof(TModel)); string where = query.WhereCreater.ToString().Replace("Where 1=1 AND", ""); Regex regex = new Regex(@"[a-z|A-Z]+\w*\."); where = regex.Replace(where, @""); var key = DbMetaDataManager.GetKeys(typeof(TModel))[0]; query.SqlBuilder.FuncSQL = string.Format(@"EXEC sp_getdatapage {0}, {1}, '[{2}]', '{3}', '{4}'", pageIndex, pageSize, tableName, where, key); return(query.ToLazyList()); }
/// <summary> /// 选择返回列,用于返回指定名称属性集合数据源 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="query"></param> /// <param name="newObject"></param> /// <returns>查询构造器,一般使用Select语句后应该执行查询</returns> public static SelectQuery <TModel> Select <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, object> > newObject) { var fields = TranslateExtendtion.TranslateObject(newObject, query.Provider) .Split(',') .Select(f => GetMetaFieldName <TModel>(query.TableIndex, f)).ToList(); query.SqlBuilder.ClearFields(); var keys = DbMetaDataManager.GetKeys(typeof(TModel)).Select(k => GetMetaFieldName <TModel>(query.TableIndex, k)); var keyAndFields = keys.ToList(); keyAndFields.AddRange(fields); keyAndFields.ForEach(f => query.SqlBuilder.AddField(f)); return(query); }