public ParamInfo GetParamInfo(IContext context, string dataStr)
        {
            var key      = dataStr.Substring(1, dataStr.Length - 1);
            var keyArray = key.Split('_');
            var str      = keyArray[1];
            var array    = str.Split('.');

            if (array.Count() <= 1)
            {
                throw new ArgumentException(string.Concat("参数", str, "设置错误!"));
            }

            var objectKey = array[0];
            var fields    = array.Skip(1).ToArray();
            var realKey   = string.Concat(objectKey, "_", string.Join("_", fields));

            var queryParams = GetQueryParams(context);

            object outData   = GetDataFromCache(queryParams, realKey);
            var    data      = GetObject(objectKey, context);
            var    valueInfo = ValueGetter.GetValue(fields, data);

            outData = ValueGetter.Builder(valueInfo);
            queryParams.ReplaceOrInsert(realKey, outData);

            return(new ParamInfo
            {
                OriginalData = valueInfo.Data,
                Type = ParamType.Object,
                Name = key,
                Data = outData
            });
        }
        internal static string BuildSql(IContext context, string oldSql, Segment segment)
        {
            var    data1 = ParamsUtil.GetParamData(context, segment.Args.ElementAt(0)).Data;
            var    data2 = ParamsUtil.GetParamData(context, segment.Args.ElementAt(1)).Data;
            string start = ValueGetter.Builder(data1, false);
            string size  = ValueGetter.Builder(data2, false);

            return(string.Concat(string.Intern("limit "), start, SqlKeyWorld.Split3, size));
        }
Exemplo n.º 3
0
        internal static string BuildSql(IContext context, string oldSql, Segment segment)
        {
            var    data     = ParamsUtil.GetParamData(context, segment.Args.ElementAt(0)).Data;
            var    isArray  = ReflectUtil.ReflectUtil.IsArray(data);
            string inParams = ValueGetter.Builder(data, isArray);

            if (!string.IsNullOrEmpty(inParams))
            {
                return(string.Concat(segment.Args.ElementAt(1), SqlKeyWorld.WhiteSpace, SqlKeyWorld.In, "(", inParams, ")"));
            }

            return(SegmentUtil.GetContent(oldSql, segment));
        }