public virtual void Visit(SqlContainsTable node)
 {
     VisitInternal(node.Asterisk);
     foreach (SqlTableColumn column in node.Columns)
     {
         VisitInternal(column);
     }
     VisitInternal(node.SearchCondition);
     foreach (SqlTableColumn column in node.TargetColumns)
     {
         VisitInternal(column);
     }
     VisitInternal(node.TargetTable);
 }
示例#2
0
 public void Visit(SqlContainsTable node)
 {
     if (node.TargetTable != null)
     {
         Visit(node.TargetTable);
     }
     foreach (var column in node.Columns)
     {
         Visit(column);
     }
     foreach (var column in node.TargetColumns)
     {
         Visit(column);
     }
 }
示例#3
0
        public override void Visit(SqlContainsTable node)
        {
            string columns;

            if (node.TargetColumns.Count == 1)
            {
                columns = node.TargetColumns[0] == node.Asterisk
          ? node.TargetColumns[0].Name
          : translator.QuoteIdentifier(node.TargetColumns[0].Name);
            }
            else
            {
                columns = "(" + string.Join(", ", node.TargetColumns.Select(c => translator.QuoteIdentifier(c.Name)).ToArray()) + ")";
            }
            context.Output.AppendText(string.Format(
                                          "CONTAINSTABLE({0}, {1}, ", translator.Translate(context, node.TargetTable.DataTable), columns));
            node.SearchCondition.AcceptVisitor(this);
            if (node.TopNByRank != null)
            {
                context.Output.AppendText(", ");
                node.TopNByRank.AcceptVisitor(this);
            }
            context.Output.AppendText(") ");
        }