Ejemplo n.º 1
0
        public dynamic GetDynamic(ParamQuery param)
        {
            var result = new ExpandoObject();

            Logger("获取动态对象", () => result = BuilderParse(param).QuerySingleDynamic());
            return(result);
        }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
        public TField GetField <TField>(ParamQuery param)
        {
            var result = default(TField);

            Logger("获取字段", () => result = BuilderParse(param).QueryValue <TField>());
            return(result);
        }
Ejemplo n.º 4
0
        public List <T> GetModelList(ParamQuery param = null)
        {
            var result = new List <T>();

            Logger("获取实体列表", () => result = BuilderParse(param).QueryMany());
            return(result);
        }
Ejemplo n.º 5
0
        public List <dynamic> GetDynamicList(ParamQuery param = null)
        {
            var result = new List <dynamic>();

            Logger("获取动态列表", () => result = BuilderParse(param).QueryManyDynamic());
            return(result);
        }
Ejemplo n.º 6
0
        protected ISelectBuilder <T> BuilderParse(ParamQuery param)
        {
            if (param == null)
            {
                param = new ParamQuery();
            }

            var data = param.GetData();

            var from   = data.From.Length == 0 ? typeof(T).Name : data.From;
            var select = string.IsNullOrEmpty(data.Select) ? (from + ".*") : data.Select;

            var where = GetSqlWhere(data.Where);

            var selectBuilder = db.Select <T>(select)
                                .From(from)
                                .Where(where)
                                .GroupBy(data.GroupBy)
                                .Having(data.Having)
                                .OrderBy(data.OrderBy)
                                .Paging(data.PagingCurrentPage, data.PagingItemsPerPage);

            var parameters = GetQueryParameters(data.Where);

            foreach (var p in parameters)
            {
                selectBuilder.Parameter(p.Name, p.Value, p.ParameterType, p.Direction, p.Size);
            }

            return(selectBuilder);
        }
Ejemplo n.º 7
0
        public T GetModel(ParamQuery param)
        {
            var result = new T();

            Logger("获取实体对象", () => result = BuilderParse(param).QuerySingle());
            return(result);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
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;
 }
Ejemplo n.º 10
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>());
        }
Ejemplo n.º 11
0
        public static string inventory(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);
        }
Ejemplo n.º 12
0
        //最大值加一
        public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery)
        {
            var sqlWhere = " where 1 = 1 ";
 
            if (pQuery != null)
            {
                var conditions = pQuery.GetData().Where;
                conditions.ForEach(c => sqlWhere += c.ToSql( GetDbType(db), !string.IsNullOrWhiteSpace(sqlWhere)));
            }

            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, ConvertHelper.ToString(dbkey));
            var key = ConvertHelper.ToString(currentKey + 1);
            SetCacheKey(table, field, key);
            return key;
        }
Ejemplo n.º 13
0
        //最大值加一
        public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery)
        {
            var sqlWhere = " where 1 = 1 ";

            if (pQuery != null)
            {
                var conditions = pQuery.GetData().Where;
                conditions.ForEach(c => sqlWhere += c.ToSql(GetDbType(db), !string.IsNullOrWhiteSpace(sqlWhere)));
            }

            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, ConvertHelper.ToString(dbkey));
            var key        = ConvertHelper.ToString(currentKey + 1);

            SetCacheKey(table, field, key);
            return(key);
        }
Ejemplo n.º 14
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);
        }
Ejemplo n.º 15
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);
        }