protected virtual ColumnAssignment VisitColumnAssignment(ColumnAssignment ca) { var c = (ColumnExpression)Visit(ca.Column); Expression e = Visit(ca.Expression); return(UpdateColumnAssignment(ca, c, e)); }
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); }
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); }
protected ColumnAssignment UpdateColumnAssignment(ColumnAssignment ca, ColumnExpression c, Expression e) { if (c != ca.Column || e != ca.Expression) { return(new ColumnAssignment(c, e)); } return(ca); }
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)); }
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); }