Exemple #1
0
        public override List <TModel> QueryOrFromCache <TModel>(LambdaQueryBase query1, out string cacheKey)
        {
            cacheKey = "none";
            var  query      = query1 as MongoDBLambdaQuery <TModel>;
            var  collection = GetCollection <TModel>();
            long rowNum     = 0;
            var  query2     = collection.Find(query.__MongoDBFilter).Sort(query._MongoDBSort);

            if (query.TakeNum > 0)
            {
                var pageIndex = query1.SkipPage - 1;
                var pageSize  = query1.TakeNum;
                var skip      = pageSize * pageIndex;
                if (skip > 0)
                {
                    query2.Skip(skip);
                }
                query2.Limit(pageSize);
                rowNum = collection.Count(query.__MongoDBFilter);
            }
            var result = query2.ToList();

            if (rowNum == 0)
            {
                rowNum = result.Count();
            }
            query.__RowCount = (int)rowNum;
            SetOriginClone(result);
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 返回动态对象的查询
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        internal System.Data.Common.DbDataReader GetQueryDynamicReader(LambdaQueryBase query)
        {
            CheckTableCreated(query.__MainType);
            string sql = "";

            query.FillParames(this);
            sql = query.GetQuery();
            sql = _DBAdapter.SqlFormat(sql);
            System.Data.Common.DbDataReader reader;
            var compileSp = query.__CompileSp;

            if (!compileSp)
            {
                if (query.TakeNum > 0)
                {
                    __DbHelper.AutoFormatWithNolock = false;
                }
                reader = __DbHelper.ExecDataReader(sql);
            }
            else//生成储过程
            {
                string sp = CompileSqlToSp(_DBAdapter.TemplateSp, sql);
                reader = __DbHelper.RunDataReader(sp);
            }
            query.ExecuteTime = __DbHelper.ExecuteTime;
            ClearParame();
            return(reader);
        }
        /// <summary>
        /// 返回动态对象的查询
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        internal CallBackDataReader GetQueryDynamicReader(LambdaQueryBase query)
        {
            CheckTableCreated(query.__MainType);
            var sql = "";

            query.FillParames(this);
            sql = query.GetQuery();
            sql = _DBAdapter.SqlFormat(sql);
            System.Data.Common.DbDataReader reader;
            var compileSp = query.__CompileSp;
            var db        = GetDBHelper(DataAccessType.Read);

            if (!compileSp)
            {
                if (query.TakeNum > 0)
                {
                    db.AutoFormatWithNolock = false;
                }
                reader = db.ExecDataReader(sql);
            }
            else//生成储过程
            {
                string sp = CompileSqlToSp(_DBAdapter.TemplateSp, sql);
                reader = db.RunDataReader(sp);
            }
            query.ExecuteTime = db.ExecuteTime;
            ClearParame();
            return(new CallBackDataReader(reader, null, sql));
        }
Exemple #4
0
        /// <summary>
        /// GROUP和是否编译判断
        /// </summary>
        /// <param name="query1"></param>
        /// <returns></returns>
        internal CallBackDataReader GetPageReader(LambdaQueryBase query1)
        {
            if (query1.__GroupFields.Count > 0)
            {
                return(GetGroupPageReader(query1));
            }
            if (_DBAdapter.CanCompileSP && query1.__CompileSp)
            {
                return(GetSpPageReader(query1));
            }

            CheckTableCreated(query1.__MainType);
            //var fields = query.GetQueryFieldString(b => b.Length > 500 || b.PropertyType == typeof(byte[]));
            var fields  = query1.GetQueryFieldString();
            var rowOver = query1.__QueryOrderBy;

            if (string.IsNullOrEmpty(rowOver))
            {
                var table = TypeCache.GetTable(query1.__MainType);
                rowOver = string.Format("t1.{0} desc", table.PrimaryKey.MapingName);
            }
            var orderBy   = System.Text.RegularExpressions.Regex.Replace(rowOver, @"t\d\.", "t.");
            var condition = query1.GetQueryConditions();

            condition = _DBAdapter.SqlFormat(condition);
            query1.FillParames(this);

            var pageIndex = query1.SkipPage;
            var pageSize  = query1.TakeNum;

            pageIndex = pageIndex == 0 ? 1 : pageIndex;
            pageSize  = pageSize == 0 ? 15 : pageSize;
            string countSql = string.Format("select count(*) from {0}", condition);
            int    count    = Convert.ToInt32(__DbHelper.ExecScalar(countSql));

            query1.ExecuteTime += __DbHelper.ExecuteTime;
            query1.RowCount     = count;
            //if (count == 0)
            //{
            //    return null;
            //}
            int pageCount = (count + pageSize - 1) / pageSize;

            if (pageIndex > pageCount)
            {
                pageIndex = pageCount;
            }

            var    start  = pageSize * (pageIndex - 1) + 1;
            var    end    = start + pageSize - 1;
            string sql    = _DBAdapter.PageSqlFormat(fields, rowOver, condition, start, end, orderBy);
            var    reader = new CallBackDataReader(__DbHelper.ExecDataReader(sql), () =>
            {
                return(count);
            });

            query1.ExecuteTime += __DbHelper.ExecuteTime;
            ClearParame();
            return(reader);
        }
Exemple #5
0
        public override List <TResult> QueryResult <TResult>(LambdaQueryBase query, NewExpression newExpression)
        {
            var typeDb = this.GetType();
            var method = typeDb.GetMethod(nameof(QueryResultNewExpression), BindingFlags.NonPublic | BindingFlags.Instance);
            var result = method.MakeGenericMethod(new Type[] { query.__MainType, typeof(TResult) }).Invoke(this, new object[] { query, newExpression });

            return(result as List <TResult>);
        }
Exemple #6
0
        /// <summary>
        /// 按编译
        /// </summary>
        /// <param name="query1"></param>
        /// <returns></returns>
        CallBackDataReader GetSpGroupPageReader(LambdaQueryBase query1)
        {
            //var query1 = query as RelationLambdaQuery<TModel>;
            CheckTableCreated(query1.__MainType);
            var sb = new StringBuilder();

            query1.GetQueryConditions(sb);
            var conditions = sb.ToString();
            var fields     = query1.GetQueryFieldString();

            if (!conditions.Contains("group"))
            {
                throw new CRLException("缺少group语法");
            }
            var rowOver = query1.GetOrder();

            if (string.IsNullOrEmpty(rowOver))
            {
                throw new CRLException("Group分页需指定Group排序字段");
                //var table = TypeCache.GetTable(typeof(T));
                //rowOver = string.Format("t1.{0} desc", table.PrimaryKey.Name);
            }
            var sort1 = System.Text.RegularExpressions.Regex.Replace(rowOver, @"t\d\.", "");

            conditions = _DBAdapter.SqlFormat(conditions);

            query1.FillParames(this);
            var pageIndex = query1.SkipPage;
            var pageSize  = query1.TakeNum;

            pageIndex = pageIndex == 0 ? 1 : pageIndex;
            pageSize  = pageSize == 0 ? 15 : pageSize;
            AddParam("pageIndex", pageIndex);
            AddParam("pageSize", pageSize);
            var db = GetDBHelper(AccessType.Read);

            db.AddOutParam("count", -1);
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("fields", fields);
            dic.Add("rowOver", rowOver);
            //dic.Add("pageSize", pageSize.ToString());
            //dic.Add("sort", sort1);
            string             sp = CompileSqlToSp(_DBAdapter.TemplateGroupPage, conditions, dic);
            CallBackDataReader reader;

            reader = new CallBackDataReader(db.RunDataReader(sp), () =>
            {
                return(GetOutParam <int>("count"));
            }, sp);
            query1.ExecuteTime += db.ExecuteTime;
            ClearParame();
            return(reader);
        }
        /// <summary>
        /// 按编译
        /// </summary>
        /// <param name="query1"></param>
        /// <returns></returns>
        CallBackDataReader GetSpPageReader(LambdaQueryBase query1)
        {
            //var query1 = query as RelationLambdaQuery<TModel>;
            CheckTableCreated(query1.__MainType);
            //var fields = query.GetQueryFieldString(b => b.Length > 500 || b.PropertyType == typeof(byte[]));
            var fields  = query1.GetQueryFieldString();
            var rowOver = query1.GetOrder();

            if (string.IsNullOrEmpty(rowOver))
            {
                var table = TypeCache.GetTable(query1.__MainType);
                if (table.PrimaryKey == null)
                {
                    throw new Exception("分页缺少默认排序字段");
                }
                rowOver = string.Format("t1.{0} desc", table.PrimaryKey.MapingName);
            }
            var orderBy = System.Text.RegularExpressions.Regex.Replace(rowOver, @"t\d\.", "t.");
            var sb      = new StringBuilder();

            query1.GetQueryConditions(sb);
            var condition = sb.ToString();

            condition = _DBAdapter.SqlFormat(condition);
            query1.FillParames(this);
            var pageIndex = query1.SkipPage;
            var pageSize  = query1.TakeNum;

            pageIndex = pageIndex == 0 ? 1 : pageIndex;
            pageSize  = pageSize == 0 ? 15 : pageSize;
            AddParam("pageIndex", pageIndex);
            AddParam("pageSize", pageSize);
            AddOutParam("count", -1);
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("fields", fields);
            dic.Add("sort", orderBy);
            dic.Add("rowOver", rowOver);
            //dic.Add("pageSize", pageSize.ToString());
            //string sql = string.Format("{0} with(nolock) where {1}", tableName, where);
            string             sp = CompileSqlToSp(_DBAdapter.TemplatePage, condition, dic);
            CallBackDataReader reader;
            var db = GetDBHelper(DataAccessType.Read);

            reader = new CallBackDataReader(db.RunDataReader(sp), () =>
            {
                return(GetOutParam <int>("count"));
            }, sp);
            ClearParame();
            query1.ExecuteTime += db.ExecuteTime;
            return(reader);
        }
        /// <summary>
        /// 返回动态对象
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public override List <dynamic> QueryDynamic(LambdaQueryBase query)
        {
            if (query.SkipPage > 0)
            {
                //int count;
                //var reader = GetPageReader(query);
                //var list = reader.GetDataDynamic(out count);
                //query.MapingTime += reader.runTime;
                //query.RowCount = count;
                //return list;

                var list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetPageReader(query));
                }, (r) =>
                {
                    int count;
                    var list2         = r.GetDataDynamic(out count);
                    query.MapingTime += r.runTime;
                    query.__RowCount  = count;
                    return(list2);
                });
                return(list);
            }
            else
            {
                //var reader = GetQueryDynamicReader(query);
                //double runTime;
                //var list = Dynamic.DynamicObjConvert.DataReaderToDynamic(reader, out runTime);
                //query.MapingTime += runTime;
                //query.RowCount = list.Count;
                //return list;

                var list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetQueryDynamicReader(query));
                }, (r) =>
                {
                    double runTime;
                    var list2         = Dynamic.DynamicObjConvert.DataReaderToDynamic(r.reader, out runTime);
                    query.MapingTime += runTime;
                    query.__RowCount  = list2.Count;
                    return(list2);
                });
                return(list);
            }
        }
Exemple #9
0
        /// <summary>
        /// 按匿名对象
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="query"></param>
        /// <param name="newExpression"></param>
        /// <returns></returns>
        public override List <TResult> QueryResult <TResult>(LambdaQueryBase query, NewExpression newExpression)
        {
            List <TResult> list;
            var            queryInfo = new LambdaQuery.Mapping.QueryInfo <TResult>(true, query.GetQueryFieldString(), null, newExpression.Constructor);

            if (query.SkipPage > 0)
            {
                var reader = GetPageReader(query);
                int count;
                list           = reader.GetDataTResult <TResult>(queryInfo, out count);
                query.RowCount = count;
            }
            else
            {
                var reader = GetQueryDynamicReader(query);
                list = ObjectConvert.DataReaderToSpecifiedList <TResult>(reader, queryInfo);
            }
            return(list);
        }
        /// <summary>
        /// 按select返回指定类型
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="query"></param>
        /// <returns></returns>
        public override List <TResult> QueryResult <TResult>(LambdaQueryBase query)
        {
            var queryInfo = new LambdaQuery.Mapping.QueryInfo <TResult>(false, query.GetQueryFieldString(), query.GetFieldMapping());

            if (query.SkipPage > 0)
            {
                //var reader = GetPageReader(query);
                //int count;
                //var list = reader.GetDataTResult<TResult>(queryInfo, out count);
                //query.RowCount = count;
                //return list;

                var list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetPageReader(query));
                }, (r) =>
                {
                    int count;
                    var list2        = r.GetDataTResult <TResult>(queryInfo, out count);
                    query.__RowCount = count;
                    return(list2);
                });
                return(list);
            }
            else
            {
                //var reader = GetQueryDynamicReader(query);
                //var list = ObjectConvert.DataReaderToSpecifiedList<TResult>(reader, queryInfo);
                //query.RowCount = list.Count;
                //return list;
                var list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetQueryDynamicReader(query));
                }, (r) =>
                {
                    var list2        = ObjectConvert.DataReaderToSpecifiedList <TResult>(r.reader, queryInfo);
                    query.__RowCount = list2.Count;
                    return(list2);
                });
                return(list);
            }
        }
Exemple #11
0
        /// <summary>
        /// 按select返回指定类型
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="query"></param>
        /// <returns></returns>
        public override List <TResult> QueryResult <TResult>(LambdaQueryBase query)
        {
            var queryInfo = new LambdaQuery.Mapping.QueryInfo <TResult>(false, query.GetQueryFieldString(), query.GetFieldMapping());

            if (query.SkipPage > 0)
            {
                var reader = GetPageReader(query);
                int count;
                var list = reader.GetDataTResult <TResult>(queryInfo, out count);
                query.RowCount = count;
                return(list);
            }
            else
            {
                var reader = GetQueryDynamicReader(query);
                var list   = ObjectConvert.DataReaderToSpecifiedList <TResult>(reader, queryInfo);
                query.RowCount = list.Count;
                return(list);
            }
        }
Exemple #12
0
 /// <summary>
 /// 返回动态对象
 /// </summary>
 /// <param name="query"></param>
 /// <returns></returns>
 public override List <dynamic> QueryDynamic(LambdaQueryBase query)
 {
     if (query.SkipPage > 0)
     {
         int count;
         var reader = GetPageReader(query);
         var list   = reader.GetDataDynamic(out count);
         query.MapingTime += reader.runTime;
         query.RowCount    = count;
         return(list);
     }
     else
     {
         var    reader = GetQueryDynamicReader(query);
         double runTime;
         var    list = Dynamic.DynamicObjConvert.DataReaderToDynamic(reader, out runTime);
         query.MapingTime += runTime;
         query.RowCount    = list.Count;
         return(list);
     }
 }
Exemple #13
0
        /// <summary>
        /// 按匿名对象
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="query"></param>
        /// <param name="newExpression"></param>
        /// <returns></returns>
        public override List <TResult> QueryResult <TResult>(LambdaQueryBase query, NewExpression newExpression)
        {
            List <TResult> list;
            var            queryInfo = new LambdaQuery.Mapping.QueryInfo <TResult>(true, query.GetQueryFieldString(), null, newExpression.Constructor);

            if (query.SkipPage > 0)
            {
                //var reader = GetPageReader(query);
                //int count;
                //list = reader.GetDataTResult<TResult>(queryInfo, out count);
                //query.RowCount = count;
                list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetPageReader(query));
                }, (r) =>
                {
                    int count;
                    var list2      = r.GetDataTResult <TResult>(queryInfo, out count);
                    query.RowCount = count;
                    return(list2);
                });
            }
            else
            {
                //var reader = GetQueryDynamicReader(query);
                //list = ObjectConvert.DataReaderToSpecifiedList<TResult>(reader, queryInfo);
                list = SqlStopWatch.ReturnData(() =>
                {
                    return(GetQueryDynamicReader(query));
                }, (r) =>
                {
                    var list2 = ObjectConvert.DataReaderToSpecifiedList <TResult>(r.reader, queryInfo);
                    return(list2);
                });
            }
            return(list);
        }
Exemple #14
0
 public override List <dynamic> QueryDynamic(LambdaQueryBase query)
 {
     throw new NotSupportedException("MongoDB暂未实现此方法");
 }
Exemple #15
0
        /// <summary>
        /// 使用完整的LamadaQuery查询
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="query"></param>
        /// <param name="cacheKey">cacheKey</param>
        /// <returns></returns>
        public override List <TModel> QueryOrFromCache <TModel>(LambdaQueryBase query, out string cacheKey)
        {
            cacheKey = "";
            CheckTableCreated <TModel>();
            List <TModel> list = new List <TModel>();

            if (query.SkipPage > 0)//按分页
            {
                list = QueryResult <TModel>(query);
                //分页不创建Clone
                //if (SettingConfig.AutoTrackingModel && query.__TrackingModel)
                //{
                //    SetOriginClone(list);
                //}
                return(list);
            }
            cacheKey = "";
            System.Data.Common.DbDataReader reader;
            query.FillParames(this);
            var sql = query.GetQuery();

            sql = _DBAdapter.SqlFormat(sql);
            var    cacheTime = query.__ExpireMinute;
            var    compileSp = query.__CompileSp;
            double runTime   = 0;
            var    db        = GetDBHelper(DataAccessType.Read);

            if (cacheTime <= 0)
            {
                list = SqlStopWatch.ReturnList(() =>
                {
                    if (!compileSp || !_DBAdapter.CanCompileSP)
                    {
                        reader = db.ExecDataReader(sql);
                    }
                    else//生成储过程
                    {
                        string sp = CompileSqlToSp(_DBAdapter.TemplateSp, sql);
                        reader    = db.RunDataReader(sp);
                    }
                    query.ExecuteTime += db.ExecuteTime;
                    var queryInfo      = new LambdaQuery.Mapping.QueryInfo <TModel>(false, query.GetQueryFieldString(), query.GetFieldMapping());
                    return(ObjectConvert.DataReaderToSpecifiedList <TModel>(reader, queryInfo));
                }, sql);
                query.MapingTime += runTime;
                //if(!string.IsNullOrEmpty(query.__RemoveInJionBatchNo))
                //{
                //    Delete<InJoin>(b => b.BatchNo == query.__RemoveInJionBatchNo);
                //    query.__RemoveInJionBatchNo = "";
                //}
            }
            else
            {
                list = MemoryDataCache.CacheService.GetCacheList <TModel>(sql, query.GetFieldMapping(), cacheTime, db, out cacheKey).Values.ToList();
            }
            ClearParame();
            query.__RowCount = list.Count;
            if (SettingConfig.AutoTrackingModel && query.__TrackingModel)
            {
                SetOriginClone(list);
            }
            //query = null;
            return(list);
        }
Exemple #16
0
        public override string GetRelationDeleteSql(string t1, string t2, string condition, LambdaQueryBase query)
        {
            string table = string.Format("{0} t1,{1} t2", KeyWordFormat(t1), KeyWordFormat(t2));

            var where = query.__Relations.First().Value.condition;
            if (query.Condition.Length > 0)
            {
                where += string.Format(" and {0}", query.Condition);
            }
            string sql = string.Format("delete t1 from {0} where {1}", table, where);

            return(sql);
        }
Exemple #17
0
        /// <summary>
        /// 按是否能编译
        /// </summary>
        /// <param name="query1"></param>
        /// <returns></returns>
        CallBackDataReader GetGroupPageReader(LambdaQueryBase query1)
        {
            //var query1 = query as RelationLambdaQuery<TModel>;
            if (_DBAdapter.CanCompileSP && query1.__CompileSp)
            {
                return(GetSpGroupPageReader(query1));
            }
            CheckTableCreated(query1.__MainType);
            var condition = query1.GetQueryConditions();
            var fields    = query1.GetQueryFieldString();

            if (!condition.Contains("group"))
            {
                throw new CRLException("缺少group语法");
            }
            var rowOver = query1.__QueryOrderBy;

            if (string.IsNullOrEmpty(rowOver))
            {
                throw new CRLException("Group分页需指定Group排序字段");
                //var table = TypeCache.GetTable(typeof(T));
                //rowOver = string.Format("t1.{0} desc", table.PrimaryKey.Name);
            }
            var sort1 = System.Text.RegularExpressions.Regex.Replace(rowOver, @"t\d\.", "");

            condition = _DBAdapter.SqlFormat(condition);

            query1.FillParames(this);
            var pageIndex = query1.SkipPage;
            var pageSize  = query1.TakeNum;

            pageIndex = pageIndex == 0 ? 1 : pageIndex;
            pageSize  = pageSize == 0 ? 15 : pageSize;

            string countSql = string.Format("select count(*)  from (select count(*) as a from {0}) t", condition);
            int    count    = Convert.ToInt32(__DbHelper.ExecScalar(countSql));

            query1.ExecuteTime += __DbHelper.ExecuteTime;
            query1.RowCount     = count;
            //if (count == 0)
            //{
            //    return null;
            //}
            int pageCount = (count + pageSize - 1) / pageSize;

            if (pageIndex > pageCount)
            {
                pageIndex = pageCount;
            }

            var    start = pageSize * (pageIndex - 1) + 1;
            var    end   = start + pageSize - 1;
            string sql   = _DBAdapter.PageSqlFormat(fields, rowOver, condition, start, end, "");
            //System.Data.Common.DbDataReader reader;
            //reader = dbHelper.ExecDataReader(sql);
            var reader = new CallBackDataReader(__DbHelper.ExecDataReader(sql), () =>
            {
                return(count);
            });

            query1.ExecuteTime += __DbHelper.ExecuteTime;
            ClearParame();
            return(reader);
        }
        /// <summary>
        /// GROUP和是否编译判断
        /// </summary>
        /// <param name="query1"></param>
        /// <returns></returns>
        internal CallBackDataReader GetPageReader(LambdaQueryBase query1)
        {
            if (query1.__GroupFields != null)
            {
                return(GetGroupPageReader(query1));
            }
            if (_DBAdapter.CanCompileSP && query1.__CompileSp)
            {
                return(GetSpPageReader(query1));
            }

            CheckTableCreated(query1.__MainType);
            //var fields = query.GetQueryFieldString(b => b.Length > 500 || b.PropertyType == typeof(byte[]));
            var fields  = query1.GetQueryFieldString();
            var rowOver = query1.GetOrder();

            if (string.IsNullOrEmpty(rowOver))
            {
                var table = TypeCache.GetTable(query1.__MainType);
                if (table.PrimaryKey == null)
                {
                    throw new Exception("分页缺少默认排序字段");
                }
                rowOver = string.Format("t1.{0} desc", table.PrimaryKey.MapingName);
            }
            //var orderBy = System.Text.RegularExpressions.Regex.Replace(rowOver, @"t\d\.", "");
            rowOver = _DBAdapter.SqlFormat(rowOver);
            var orderBy = rowOver;
            var sb      = new StringBuilder();

            query1.GetQueryConditions(sb);
            var condition = sb.ToString();

            condition = _DBAdapter.SqlFormat(condition);
            query1.FillParames(this);

            var pageIndex = query1.SkipPage;
            var pageSize  = query1.TakeNum;

            pageIndex = pageIndex <= 0 ? 1 : pageIndex;
            pageSize  = pageSize <= 0 ? 15 : pageSize;
            string countSql = string.Format("select count(*) {0}", condition);
            var    db       = GetDBHelper(DataAccessType.Read);
            int    count    = Convert.ToInt32(SqlStopWatch.ExecScalar(db, countSql));

            query1.ExecuteTime += db.ExecuteTime;
            query1.__RowCount   = count;
            if (count == 0)
            {
                return(null);
            }
            int pageCount = (count + pageSize - 1) / pageSize;

            if (pageIndex > pageCount)
            {
                pageIndex = pageCount;
            }

            var    start  = pageSize * (pageIndex - 1) + 1;
            var    end    = start + pageSize - 1;
            string sql    = _DBAdapter.PageSqlFormat(db, fields, rowOver, condition, start, end, orderBy);
            var    reader = new CallBackDataReader(db.ExecDataReader(sql), () =>
            {
                return(count);
            }, sql);

            query1.ExecuteTime += db.ExecuteTime;
            ClearParame();
            return(reader);
        }
Exemple #19
0
 public override List <TResult> QueryResult <TResult>(LambdaQueryBase query)
 {
     throw new NotSupportedException("MongoDB暂未实现此方法");
 }
Exemple #20
0
 //public override List<TResult> QueryDynamic<TModel, TResult>(LambdaQuery.LambdaQuery<TModel> query)
 //{
 //    var result = GetDynamicResult(query);
 //    var type = typeof(TResult);
 //    var pro = type.GetProperties();
 //    var list = new List<TResult>();
 //    var reflection = ReflectionHelper.GetInfo<TResult>();
 //    foreach (var item in result)
 //    {
 //        var dict = item as IDictionary<string, object>;
 //        var obj = (TResult)System.Activator.CreateInstance(type);
 //        foreach (var f in pro)
 //        {
 //            string columnName = f.Name;
 //            if (dict.ContainsKey(columnName))
 //            {
 //                object value = dict[columnName];
 //                //f.SetValue(obj, value);
 //                //var tuple = Tuple.GetCacheDelegate<TResult>(type, pro, columnName);
 //                //tuple.SetValue(obj, value);
 //                var access = reflection.GetAccessor(columnName);
 //                access.Set((TResult)obj, value);
 //            }
 //        }
 //        list.Add(obj);
 //    }
 //    return list;
 //}
 public override List <TResult> QueryResult <TResult>(LambdaQueryBase query)
 {
     throw new NotImplementedException();
 }