Esempio n. 1
0
        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));
                }
            }
        }
Esempio n. 2
0
 public override void Process(Expressions.DeleteDataExpression expression)
 {
     truncator.Truncate(expression);
     CheckTable(expression.TableName);
     RegisterExpression(expression, typeof(DeleteDataExpression));
     InternalProcess(Generator.Generate(expression));
 }
Esempio n. 3
0
        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());
            }
        }
Esempio n. 4
0
 public void Process(Expressions.DeleteDataExpression expression)
 {
     Process(Generator.Generate(expression));
 }