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); }
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); }
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()); }