Ejemplo n.º 1
0
        protected override DataTable FillDbData(TkDbContext context, DataSet dataSet)
        {
            using (SqlSelector selector = new SqlSelector(context, dataSet))
            {
                TableSchemeData       data      = new TableSchemeData(context, Scheme);
                ParamBuilderContainer container = new ParamBuilderContainer();
                if (FilterSql != null)
                {
                    string filter = Expression.Execute(FilterSql, selector);
                    container.Add(filter);
                }
                container.Add(CreateActiveFilter(context));

                string tableName = Scheme.TableName;
                string sql       = string.Format(ObjectUtil.SysCulture, "SELECT {0} FROM {1}",
                                                 data.SelectFields, context.EscapeName(tableName));
                string regName = RegName;
                selector.Select(regName, sql, container, OrderBy);
                DataTable dataTable = dataSet.Tables[regName];

                DataColumn idColumn = dataTable.Columns[fDisplay.Id.NickName];
                idColumn.ColumnName = DecoderConst.CODE_NICK_NAME;
                dataTable.Columns[fDisplay.Name.NickName].ColumnName = DecoderConst.NAME_NICK_NAME;

                if (NameExpression != "{Name}")
                {
                    foreach (DataRow row in dataTable.Rows)
                    {
                        row[DecoderConst.NAME_NICK_NAME] = InternalExpression.Execute(row);
                    }
                }
                return(dataTable);
            }
        }
Ejemplo n.º 2
0
        public ExpressionTree(string rule)
        {
            // strip all spaces
            rule = rule.Replace(" ", "");
            int p = 0;

            exp = new InternalExpression(rule, ref p);
        }
Ejemplo n.º 3
0
        internal SqlNode TranslateLink(SqlLink link, List <SqlExpression> keyExpressions, bool asExpression)
        {
            MetaDataMember mm = link.Member;

            if (mm.IsAssociation)
            {
                // Create the row source.
                MetaType   otherType = mm.Association.OtherType;
                Type       tableType = otherType.InheritanceRoot.Type;
                ITable     table     = this.services.Context.GetTable(tableType);
                Expression source    = new LinkedTableExpression(link, table, typeof(IQueryable <>).MakeGenericType(otherType.Type));
                // Build key expression nodes.
                Expression[] keyExprs = new Expression[keyExpressions.Count];
                for (int i = 0; i < keyExpressions.Count; ++i)
                {
                    MetaDataMember metaMember = mm.Association.OtherKey[i];
                    Type           memberType = TypeSystem.GetMemberType(metaMember.Member);
                    keyExprs[i] = InternalExpression.Known(keyExpressions[i], memberType);
                }
                Expression lex = link.Expression != null
                    ? (Expression)InternalExpression.Known(link.Expression)
                    : (Expression)Expression.Constant(null, link.Member.Member.DeclaringType);
                Expression expr = TranslateAssociation(this.services.Context, mm.Association, source, keyExprs, lex);
                // Convert
                QueryConverter qc  = new QueryConverter(this.services, this.typeProvider, this, this.sql);
                SqlSelect      sel = (SqlSelect)qc.ConvertInner(expr, link.SourceExpression);
                // Turn it into an expression is necessary
                SqlNode result = sel;
                if (asExpression)
                {
                    if (mm.Association.IsMany)
                    {
                        result = new SqlSubSelect(SqlNodeType.Multiset, link.ClrType, link.SqlType, sel);
                    }
                    else
                    {
                        result = new SqlSubSelect(SqlNodeType.Element, link.ClrType, link.SqlType, sel);
                    }
                }
                return(result);
            }
            else
            {
                System.Diagnostics.Debug.Assert(link.Expansion != null);
                System.Diagnostics.Debug.Assert(link.KeyExpressions == keyExpressions);
                // deferred expression already defined...
                return(link.Expansion);
            }
        }
Ejemplo n.º 4
0
 public SubExpression(string rule, ref int p)
 {
     if (rule[p] == '(')
     {
         isNode = false;
         p++;
         sub = new InternalExpression(rule, ref p);
         p++; // to consume the closing )
     }
     else
     {
         isNode = true;
         factor = "";
         do
         {
             factor += rule[p];
             p++;
         } while (p < rule.Length && rule[p] != ')' && rule[p] != '+' && rule[p] != '*');
     }
 }
Ejemplo n.º 5
0
 protected override void Visit(InternalExpression node) { Visit((Expression)node); }
Ejemplo n.º 6
0
 protected override void Visit(InternalExpression node)
 {
     Visit((Expression)node);
 }
Ejemplo n.º 7
0
 protected virtual void Visit(InternalExpression node)
 {
 }