示例#1
0
        public List <T> Select <T>(ORMCondBase condition, IDBExecutor exec) where T : new()
        {
            ORMSelect s = new ORMSelect(Adp);

            s.FocalType = typeof(T);
            s.Condition = condition;
            return(Select <T>(s, exec));
        }
示例#2
0
        private SQConditionBase GetCondition(ORMCondBase cond, ORMSelect select)
        {
            if (cond != null)
            {
                SQConditionBase res = null;
                if (cond is ORMCond)
                {
                    ORMCond cnd      = (ORMCond)cond;
                    string  operandA = GetPropertyChainColumn(cnd.PropertyChain, select);
                    string  operandB = null;
                    if (cnd.Value is ORMPropertyChain)
                    {
                        operandB = GetPropertyChainColumn(((ORMPropertyChain)cnd.Value).Chain, select);
                    }
                    else if (cnd.Value == ORMCond.NullOperand)
                    {
                        operandB = "NULL";
                    }
                    else
                    {
                        operandB = GetNextParam();
                        Query.Parameters.Add(new SQParameter((string)operandB, cnd.Value));
                    }
                    res = new SQCondition(operandA, cnd.Operator, operandB, cnd.InvertMeaning);
                }
                else if (cond is ORMCondSQL)
                {
                    ORMCondSQL cnd = (ORMCondSQL)cond;
                    res = cnd.Cond;

                    foreach (SQParameter prm in cnd.Parameters)
                    {
                        Query.Parameters.Add(prm);
                    }
                }
                else if (cond is ORMCondGroup)
                {
                    ORMCondGroup grp = (ORMCondGroup)cond;
                    res = new SQConditionGroup(grp.InvertMeaning, GetCondition(grp.InnerCondition, select));
                }

                if (cond.NextCondition != null)
                {
                    if (cond.Connective == SQLogicOperators.AND)
                    {
                        res.And(GetCondition(cond.NextCondition, select));
                    }
                    else
                    {
                        res.Or(GetCondition(cond.NextCondition, select));
                    }
                }

                return(res);
            }

            return(null);
        }
示例#3
0
 private void AppendCondition(ORMCondBase condition, SQLogicOperators connective)
 {
     if (NextCondition == null)
     {
         NextCondition = condition;
         Connective    = connective;
     }
     else
     {
         NextCondition.AppendCondition(condition, connective);
     }
 }
示例#4
0
 public virtual void Update(object o, ORMCondBase condition)
 {
     //if (o != null)
     //{
     //    SchemaTable t = Schema.EnsureSchema(o.GetType());
     //    if (t != null)
     //    {
     //        UpdateQuery q = new UpdateQuery()
     //        {
     //            PrimaryTable = new AliasableObject(t.Table.Name)
     //        };
     //        PopulateSetQuery(q, o, t);
     //        q.Condition = condition;
     //        Adp.Update(q);
     //    }
     //    else
     //    {
     //        throw new InvalidTypeException(o.GetType());
     //    }
     //}
 }
示例#5
0
 public List <T> Select <T>(ORMCondBase condition) where T : new()
 {
     return(Select <T>(condition, Adp));
 }
 public ORMCondGroup(ORMCondBase innercond)
 {
     InnerCondition = innercond;
 }
示例#7
0
 /// <summary>
 /// Append a condition with a connective "and" to this condition chain and return this.
 /// </summary>
 /// <param name="nextCondition"></param>
 /// <returns></returns>
 public ORMCondBase And(ORMCondBase nextCondition)
 {
     AppendCondition(nextCondition, SQLogicOperators.AND);
     return(this);
 }
示例#8
0
 /// <summary>
 /// Append a condition with a connective "or" to this condition chain and return this.
 /// </summary>
 /// <param name="nextCondition"></param>
 /// <returns></returns>
 public ORMCondBase Or(ORMCondBase nextCondition)
 {
     AppendCondition(nextCondition, SQLogicOperators.OR);
     return(this);
 }