/// <summary> /// 使用实体对象初始化构造函数 /// </summary> /// <param name="e"></param> public DMEDb_OQL1(DMEDb_EntityBase e,DMEDb_OQL q) { this.CurrEntity = e; this.CurrOQL = q; this.CurrEntity.PropertyGetting += new EventHandler<PropertyGettingEventArgs>(CurrEntity_PropertyGetting); }
public DMEDb_JoinEntity(DMEDb_OQL mainOql) { this._mainOql = mainOql; }
/// <summary> /// 以另外一个OQL条件作为Not In的子查询 /// </summary> /// <seealso cref="http://www.cnblogs.com/bluedoctor/archive/2011/02/24/1963606.html"/> /// <param name="field">属性字段</param> /// <param name="q">OQL表达式</param> /// <returns></returns> public DMEDb_OQL2 NotIn(object field, DMEDb_OQL q) { return IN(field, q, false ); }
private DMEDb_OQL2 IN(object field, DMEDb_OQL q,bool isIn) { string inString = isIn ? " IN " : " NOT IN "; if (q.sql_fields.IndexOf(',') > 0) throw new Exception("OQL 语法错误,包含在In查询中的子查询只能使用1个实体属性,请修改子查询的Select参数。"); string childSql = q.ToString().Replace("@P","@INP"); _conditionString += " AND " + currFieldName + inString + " (\r\n" + childSql + ")"; foreach (string key in q.Parameters.Keys) this.paras.Add("IN"+key , q.Parameters[key]); return this; }
/// <summary> /// 以另外一个OQL条件作为In的子查询 /// </summary> /// <seealso cref="http://www.cnblogs.com/bluedoctor/archive/2011/02/24/1963606.html"/> /// <param name="field">属性字段</param> /// <param name="q">OQL表达式</param> /// <returns></returns> public DMEDb_OQL2 IN(object field, DMEDb_OQL q) { //if (q.sql_fields.IndexOf(',') > 0) // throw new Exception("OQL 语法错误,包含在In查询中的子查询只能使用1个实体属性,请修改子查询的Select参数。"); //_conditionString += " AND " + currFieldName + " IN (\r\n" + q.ToString () + ")"; //foreach (string key in q.Parameters.Keys) // this.paras.Add(key, q.Parameters[key]); //return this; return IN(field, q, true); }