Ejemplo n.º 1
0
        public void ProcessConstraint(Evaluant.OPath.Expressions.Constraint constraint)
        {
            _IsFirstAttribute = true;
            constraint.Accept(this);

            ISQLExpression currentItem = (ISQLExpression)sqlExpressionContext.Pop();
            SelectStatement currentQuery = (SelectStatement)queryContext.Pop();

            if (currentItem != null && currentItem is ILogicExpression)
                currentQuery.WhereClause.SearchCondition.Add((ILogicExpression)currentItem);

            sqlExpressionContext.Push(currentItem);

            EntityMapping em = (EntityMapping)entityMappingContext.Peek();

            //bool idFieldInserted = false;
            //foreach (ISQLExpression exp in currentQuery.SelectList)
            //{
            //    Column col = exp as Column;
            //    if (col.ColumnName == em.GetIdField(em.Ids[0]))
            //    {
            //        idFieldInserted = true;
            //        break;
            //    }
            //}

            //if (!idFieldInserted && em.Ids[0].Generator.Name == GeneratorMapping.GeneratorType.inherited)
            //    currentQuery.SelectList.Add(new Column(em.Ids[0], em.GetIdField(em.Ids[0]))); //currentQuery.TableAlias, xxx , em.GetIdFieldAs(em.Ids[0])

            foreach (AttributeMapping am in em.Attributes)
                if (am.Table == em.Table && em.Ids[0].Generator.Name == GeneratorMapping.GeneratorType.inherited)
                    currentQuery.SelectList.Add(new Column(am, currentQuery.FromClause[0].TableAlias, am.Field));

            queryContext.Push(currentQuery);
        }