예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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());
        }
예제 #3
0
        /// <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);
        }