public override void Process(Expressions.DeleteDataExpression expression) { truncator.Truncate(expression); CheckTable(expression.TableName); RegisterExpression(expression, typeof(DeleteDataExpression)); var subExpression = new DeleteDataExpression() { SchemaName = expression.SchemaName, TableName = expression.TableName, IsAllRows = expression.IsAllRows }; if (expression.IsAllRows) { InternalProcess(Generator.Generate(expression)); } else { foreach (var row in expression.Rows) { subExpression.Rows.Clear(); subExpression.Rows.Add(row); InternalProcess(Generator.Generate(subExpression)); } } }
public override void Process(Expressions.DeleteDataExpression expression) { truncator.Truncate(expression); CheckTable(expression.TableName); RegisterExpression(expression, typeof(DeleteDataExpression)); InternalProcess(Generator.Generate(expression)); }
public override string Generate(Expressions.DeleteDataExpression expression) { if (expression.IsAllRows) { return(string.Format("DELETE FROM {0}", Quoter.QuoteTableName(expression.TableName, expression.SchemaName))); } else { var deleteExpressions = new StringBuilder(); foreach (var row in expression.Rows) { var clauses = row.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))); }); var separator = deleteExpressions.Length > 0 ? " " : string.Empty; deleteExpressions.AppendFormat("{0}DELETE FROM {1} WHERE {2}", separator, Quoter.QuoteTableName(expression.TableName, expression.SchemaName), clauses); } return(deleteExpressions.ToString()); } }
public void Process(Expressions.DeleteDataExpression expression) { Process(Generator.Generate(expression)); }