public override void Process(Expressions.UpdateDataExpression expression) { truncator.Truncate(expression); CheckColumn(expression.TableName, expression.Set.Select(x => x.Key)); RegisterExpression <UpdateDataExpression>(expression); InternalProcess(Generator.Generate(expression)); }
public override string Generate(Expressions.UpdateDataExpression expression) { var updateClauses = expression.Set.Aggregate(new StringBuilder(), (acc, newRow) => { var accumulator = acc.Length == 0 ? string.Empty : ", "; return(acc.AppendFormat("{0}{1} = {2}", accumulator, Quoter.QuoteColumnName(newRow.Key), Quoter.QuoteValue(newRow.Value))); }); if (expression.IsAllRows) { return(string.Format("UPDATE {0} SET {1}", Quoter.QuoteTableName(expression.TableName, expression.SchemaName), updateClauses)); } var whereClauses = expression.Where.Aggregate(new StringBuilder(), (acc, rowVal) => { var accumulator = acc.Length == 0 ? string.Empty : " AND "; var clauseOperator = rowVal.Value == null || rowVal.Value == DBNull.Value ? "IS" : "="; return(acc.AppendFormat("{0}{1} {2} {3}", accumulator, Quoter.QuoteColumnName(rowVal.Key), clauseOperator, Quoter.QuoteValue(rowVal.Value))); }); return(string.Format("UPDATE {0} SET {1} WHERE {2}", Quoter.QuoteTableName(expression.TableName, expression.SchemaName), updateClauses, whereClauses)); }
public void Process(Expressions.UpdateDataExpression expression) { Process(Generator.Generate(expression)); }