Example #1
0
        public override OutputData DoAction(IInputData input)
        {
            if (MainResolver != null)
            {
                IParamBuilder builder;
                if (FilterSql != null)
                {
                    builder = ParamBuilder.CreateSql(Expression.Execute(FilterSql, this));
                }
                else
                {
                    builder = ParamBuilder.CreateSql("1=1");
                }
                MainResolver.Select(builder, OrderBy);

                MetaDataTableResolver metaResolver = MainResolver as MetaDataTableResolver;
                if (metaResolver != null)
                {
                    metaResolver.Decode(input.Style);
                }
            }

            if (UseCallerInfo)
            {
                input.CallerInfo.AddInfo(DataSet);
            }

            return(OutputData.Create(DataSet));
        }
Example #2
0
        public void SelectWithParam(string filterSql, string orderBy, string field, object value)
        {
            TkDebug.AssertArgumentNullOrEmpty(field, "field", this);
            TkDebug.AssertArgumentNull(value, "value", this);

            IParamBuilder builder = SqlParamBuilder.CreateEqualSql(Context, GetFieldInfo(field), value);

            if (!string.IsNullOrEmpty(filterSql))
            {
                builder = ParamBuilder.CreateParamBuilder(builder, ParamBuilder.CreateSql(filterSql));
            }

            Select(builder, orderBy);
        }
Example #3
0
        public IParamBuilder CreateParamBuilder(TkDbContext context, IFieldInfoIndexer indexer)
        {
            if (fSelectBuilder == null)
            {
                TkDebug.AssertArgumentNull(context, "context", this);
                TkDebug.AssertArgumentNull(indexer, "indexer", this);

                IFieldInfo fakeInfo = indexer[FieldName];
                TkDebug.AssertNotNull(fakeInfo, string.Format(ObjectUtil.SysCulture,
                                                              "{0}中没有配置字段{1}", indexer, FieldName), this);
                fSelectBuilder = ParamBuilder.InternalCreateSingleSql(context,
                                                                      fakeInfo.FieldName, fakeInfo.DataType, "!=", fakeInfo.FieldName, Value);
                if (AllowNull)
                {
                    fSelectBuilder = ParamBuilder.CreateParamBuilderWithOr(fSelectBuilder,
                                                                           ParamBuilder.CreateSql(fakeInfo.FieldName + " IS NULL"));
                }
            }
            return(fSelectBuilder);
        }
Example #4
0
        public IParamBuilder CreateParamBuilder(string filterSql, string[] fields, params object[] values)
        {
            TkDebug.AssertEnumerableArgumentNullOrEmpty(fields, "fields", this);
            TkDebug.AssertEnumerableArgumentNull(values, "values", this);
            TkDebug.Assert(fields.Length == values.Length, string.Format(ObjectUtil.SysCulture,
                                                                         "参数fields和values的个数不匹配,fields的个数为{0},而values的个数为{1}",
                                                                         fields.Length, values.Length), this);

            List <IParamBuilder> list = new List <IParamBuilder>(fields.Length + 1);

            for (int i = 0; i < fields.Length; i++)
            {
                IParamBuilder builder = SqlParamBuilder.CreateEqualSql(Context,
                                                                       GetFieldInfo(fields[i]), values[i]);
                list.Add(builder);
            }
            if (!string.IsNullOrEmpty(filterSql))
            {
                list.Add(ParamBuilder.CreateSql(filterSql));
            }

            return(ParamBuilder.CreateParamBuilder(list));
        }
Example #5
0
        private void ProcessCustomRootNodes(string rootId)
        {
            IParamBuilder builder = string.IsNullOrEmpty(rootId) ? null
                : ParamBuilder.CreateSql(rootId);

            if (UseCustomParamBuilder)
            {
                builder = GetCustomParamBuilder(builder);
            }

            DataTable table = fSelector.HostTable;
            int       start = table == null ? 0 : table.Rows.Count;

            fSelector.Select(builder);
            if (table == null)
            {
                table = fSelector.HostTable;
            }
            int end = table.Rows.Count;

            // 没有获得数据
            if (start == end)
            {
                fRootParentId = DbTreeDefinition.DEFAULT_PARENT_VALUE;
                fRootNodes    = Enumerable.Empty <ITreeNode>();
                SetTopLevel(null);
                return;
            }

            // 获得数据
            DataRow row = table.Rows[start];

            fRootParentId = row[fDefinition.ParentIdField].ToString();
            fRootNodes    = GetRootNodes(table, start, end);
            SetTopLevel(fRootNodes.First());
        }
Example #6
0
 private IParamBuilder GetManyToManyParamBuilder(TableResolver detailResolver, object masterValue)
 {
     return(ParamBuilder.CreateSql(string.Format(ObjectUtil.SysCulture,
                                                 "{0} IN ({1})", detailResolver.GetFieldInfo(fDetailFields[0]).FieldName,
                                                 fManyToMany.GetSubSelectSql(masterValue))));
 }
Example #7
0
        /// <summary>
        /// 根据SQL条件语句填充数据
        /// </summary>
        /// <param name="whereClause">SQL的条件子句</param>
        public void Select(string whereClause)
        {
            TkDebug.AssertArgumentNullOrEmpty(whereClause, "whereClause", this);

            Select(ParamBuilder.CreateSql(whereClause));
        }
Example #8
0
 public override IParamBuilder GetCondition(IFieldInfo field, string fieldValue)
 {
     return(ParamBuilder.CreateSql($"{field.FieldName} REGEXP '{fieldValue}'"));
 }