示例#1
0
        protected override void Build(bool forContent)
        {
            BuildFields(true, true);
            if (ConditonCriteria != null)
            {
                BuildCindition(ConListFieldDict);
            }
            else
            {
                Condition = String.Empty;
            }
            List <Order> os = new List <Order>();

            foreach (Order o in this.OrderList)
            {
                if (!ConListFieldDict.ContainsKey(o.Name))
                {
                    throw new NotSupportedException("没有实现这个方法的内容,没有地方用到");
                    //string msg = String.Format("Property '{0}' doesn't not belong to '{1}'.", o.Name, EntityObject.TypeName);
                    //throw new DataException(msg, ErrorCodes.UnknownProperty);
                }

                ConListField f = ConListFieldDict[o.Name];
                o.AliasName = o.Name;
                o.Name      = f.FieldName;
                os.Add(o);
            }

            string table = Connect.Driver.FormatTable(ModelTable.Name);

            SQL.SqlClause = Connect.Driver.BuildPaging(table, Fields, Condition, os, From, count);
        }
示例#2
0
        private string AddParameter(ConListField f, object v)
        {
            string        _f0 = String.Format("{0}P{1}", Prefix, parametersCount++);
            DataParameter _f1 = new DataParameter();

            _f1.DbType        = f.Type;
            _f1.ParameterName = _f0;
            _f1.Value         = v;
            _f1.Size          = f.Size;
            //_f1.IsNullable = p.Nullable;
            SQL.Parameters.Add(_f1);
            return(_f0);
        }
示例#3
0
        string MakeCondition(Criteria ct, Dictionary <string, ConListField> fields)
        {
            StringBuilder _f0 = new StringBuilder();

            // If the CriteraType is None, we don't put this as a condition
            if (ct.Type != CriteriaType.None)
            {
                if (!Columns.Contains(ct.Name))
                {
                    throw new ArgumentException("在数据集中不存在当前字段:" + ct.Name);
                }
                We7DataColumn dc = Columns[ct.Name];
                if (dc.Direction == ParameterDirection.ReturnValue)
                {
                    throw new ArgumentException("不能使用ReturnValue字段作为查询字段:" + ct.Name);
                }

                string t = Connect.Driver.GetCriteria(ct.Type);

                string       pn = "";
                ConListField f  = fields[ct.Name];
                if (f.FieldName != f.AliasName)
                {
                    pn = AddParameter(f, ct.Value);
                }
                else
                {
                    pn = AddParameter(dc, ct.Value);
                }
                Adorns adorn = ct.Adorn;
                _f0.Append(String.Format(" {0} {1} {2} ", connect.Driver.FormatField(adorn, f.FieldName, ct.Start, ct.Length), t, pn));
                //_f0.Append(String.Format(" {0} {1} {2} ", f.AliasName, t, ct.Value));
            }

            if (ct.Criterias.Count > 0)
            {
                string _f1 = ct.Mode == CriteriaMode.And ? " AND " : " OR ";
                if (ct.Type != CriteriaType.None)
                {
                    _f0.Append(_f1);
                }

                bool _f2 = ct.Criterias.Count > 1;
                if (_f2)
                {
                    _f0.Append("(");
                }

                _f0.Append(MakeCondition(ct.Criterias[0], fields));

                for (int i = 1; i < ct.Criterias.Count; i++)
                {
                    Criteria _f3 = ct.Criterias[i];
                    _f0.Append(_f1);
                    _f0.Append(MakeCondition(_f3, fields));
                }

                if (_f2)
                {
                    _f0.Append(")");
                }
            }
            return(_f0.ToString());
        }