Exemple #1
0
        public T GetModel(ParamQuery param)
        {
            var result = new T();

            Logger("获取实体对象", () => result = BuilderParse(param).QuerySingle());
            //if (result == null) result = new T();
            return(result);
        }
Exemple #2
0
        public dynamic GetDynamicListWithPaging(ParamQuery param = null)
        {
            dynamic result = new ExpandoObject();

            result.rows  = this.GetDynamicList(param);
            result.total = this.queryRowCount(param, result.rows);
            return(result);
        }
Exemple #3
0
        protected int queryRowCount(ParamQuery param, dynamic rows)
        {
            if (rows != null)
            {
                if (null == param || param.GetData().PagingItemsPerPage == 0)
                {
                    return(rows.Count);
                }
            }

            var RowCountParam = param;
            var sql           = BuilderParse(RowCountParam.Paging(1, 0).OrderBy(string.Empty)).GetSql();

            return(db.Sql(@"select count(*) from ( " + sql + " ) tb_temp").QuerySingle <int>());
        }
Exemple #4
0
        //最大值加一
        public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery)
        {
            //var where = pQuery.GetData().WhereSql;
            var sqlWhere = " where 1 = 1 ";

            if (pQuery != null)
            {
                sqlWhere += " and " + pQuery.GetData().WhereSql;
            }
            var dbkey      = db.Sql(String.Format("select isnull(max({0}),0) from {1} {2}", field, table, sqlWhere)).QuerySingle <string>();
            var cachedKeys = getCacheKey(table, field);
            var currentKey = maxOfAllKey(cachedKeys, ZConvert.ToString(dbkey));
            var key        = ZConvert.ToString(currentKey + 1);

            SetCacheKey(table, field, key);
            return(key);
        }
Exemple #5
0
        protected ISelectBuilder <T> BuilderParse(ParamQuery param)
        {
            if (param == null)
            {
                param = new ParamQuery();
            }

            var data          = param.GetData();
            var sFrom         = data.From.Length == 0 ? typeof(T).Name : data.From;
            var selectBuilder = db.Select <T>(string.IsNullOrEmpty(data.Select) ? (sFrom + ".*") : data.Select)
                                .From(sFrom)
                                .Where(data.WhereSql)
                                .GroupBy(data.GroupBy)
                                .Having(data.Having)
                                .OrderBy(data.OrderBy)
                                .Paging(data.PagingCurrentPage, data.PagingItemsPerPage);

            return(selectBuilder);
        }
Exemple #6
0
        public ParamQuery ToParamQuery()
        {
            var pQuery         = new ParamQuery();
            var settings       = XElement.Parse(settingXml);
            var defaultOrderBy = getXmlElementAttr(settings, "defaultOrderBy");

            pQuery.Select(getXmlElementValue(settings, "select"));

            //获取分页及排序信息
            var page    = parseInt(this.request["page"], 1);
            var rows    = parseInt(this.request["rows"], 0);
            var orderby = string.Join(" ", getFieldName(this["sort"], true), this["order"]).Trim();

            if (string.IsNullOrEmpty(orderby))
            {
                orderby = defaultOrderBy;
            }

            var sFrom = getXmlElementValue(settings, "from");

            if (string.IsNullOrEmpty(sFrom))
            {
                sFrom = getXmlElementValue(settings, "table");
            }

            var fromMatches = new Regex(@"\$variable\[([a-zA-Z_][a-zA-Z0-9_]*)\]", RegexOptions.Multiline).Matches(sFrom);

            foreach (Match match in fromMatches)
            {
                sFrom = sFrom.Replace(match.Groups[0].ToString(), this[match.Groups[1].ToString()]);
            }

            pQuery.From(sFrom)
            .Paging(page, rows)
            .OrderBy(orderby);

            parseWhere(settings, (name, value, compare, variable, extend) =>
            {
                pQuery.AndWhere(name, value, compare, extend);
            });
            return(pQuery);
        }