コード例 #1
0
ファイル: DbExpressionVisitor.cs プロジェクト: 842549829/Pool
        protected virtual ColumnAssignment VisitColumnAssignment(ColumnAssignment ca)
        {
            var        c = (ColumnExpression)Visit(ca.Column);
            Expression e = Visit(ca.Expression);

            return(UpdateColumnAssignment(ca, c, e));
        }
コード例 #2
0
        protected override Expression VisitUpdate(UpdateCommand update)
        {
            Write("UPDATE ");
            WriteTableName(update.Table.Name);
            WriteLine(Indentation.Same);
            bool saveHide = HideColumnAliases;

            HideColumnAliases = true;
            Write("SET ");
            for (int i = 0, n = update.Assignments.Count; i < n; i++)
            {
                ColumnAssignment ca = update.Assignments[i];
                if (i > 0)
                {
                    Write(", ");
                }
                Visit(ca.Column);
                Write(" = ");
                Visit(ca.Expression);
            }
            if (update.Where != null)
            {
                WriteLine(Indentation.Same);
                Write("WHERE ");
                VisitPredicate(update.Where);
            }
            HideColumnAliases = saveHide;
            return(update);
        }
コード例 #3
0
 protected override Expression VisitInsert(InsertCommand insert)
 {
     Write("INSERT INTO ");
     WriteTableName(insert.Table.Name);
     Write("(");
     for (int i = 0, n = insert.Assignments.Count; i < n; i++)
     {
         ColumnAssignment ca = insert.Assignments[i];
         if (i > 0)
         {
             Write(", ");
         }
         WriteColumnName(ca.Column.Name);
     }
     Write(")");
     WriteLine(Indentation.Same);
     Write("VALUES (");
     for (int i = 0, n = insert.Assignments.Count; i < n; i++)
     {
         ColumnAssignment ca = insert.Assignments[i];
         if (i > 0)
         {
             Write(", ");
         }
         Visit(ca.Expression);
     }
     Write(")");
     return(insert);
 }
コード例 #4
0
ファイル: DbExpressionVisitor.cs プロジェクト: 842549829/Pool
 protected ColumnAssignment UpdateColumnAssignment(ColumnAssignment ca, ColumnExpression c, Expression e)
 {
     if (c != ca.Column || e != ca.Expression)
     {
         return(new ColumnAssignment(c, e));
     }
     return(ca);
 }
コード例 #5
0
ファイル: Parameterizer.cs プロジェクト: 842549829/Pool
        protected override ColumnAssignment VisitColumnAssignment(ColumnAssignment ca)
        {
            ca = base.VisitColumnAssignment(ca);
            Expression expression = ca.Expression;
            var        nv         = expression as NamedValueExpression;

            if (nv != null)
            {
                expression = new NamedValueExpression(nv.Name, ca.Column.QueryType, nv.Value);
            }
            return(UpdateColumnAssignment(ca, ca.Column, expression));
        }
コード例 #6
0
ファイル: DbExpressionVisitor.cs プロジェクト: 842549829/Pool
        protected virtual ReadOnlyCollection <ColumnAssignment> VisitColumnAssignments(ReadOnlyCollection <ColumnAssignment> assignments)
        {
            List <ColumnAssignment> alternate = null;

            for (int i = 0, n = assignments.Count; i < n; i++)
            {
                ColumnAssignment assignment = VisitColumnAssignment(assignments[i]);
                if (alternate == null && assignment != assignments[i])
                {
                    alternate = assignments.Take(i).ToList();
                }
                if (alternate != null)
                {
                    alternate.Add(assignment);
                }
            }
            if (alternate != null)
            {
                return(alternate.AsReadOnly());
            }
            return(assignments);
        }