Represents a 'DELETE' database query.
Inheritance: DbQueryExpression
Example #1
0
        /// <summary>
        /// Translates the <paramref name="deleteExpression"/> into a string representation.
        /// </summary>
        /// <param name="deleteExpression">The <see cref="DbDeleteExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitDeleteExpression(DbDeleteExpression deleteExpression)
        {
            var sb = new StringBuilder();

            if (deleteExpression.FromExpression.IsNull())
            {
                sb.AppendFormat("DELETE FROM {0} ", Visit(deleteExpression.Target));
            }
            else
            {
                var aliasExpression = deleteExpression.FromExpression.Find <DbAliasExpression>(ae => ae.Target.Equals(deleteExpression.Target)).FirstOrDefault();
                if (aliasExpression.IsNull())
                {
                    sb.AppendFormat("DELETE {0} ", Visit(deleteExpression.Target));
                }
                else
                {
                    sb.AppendFormat("DELETE {0} ", aliasExpression.Alias);
                }
                sb.AppendLine();
                sb.AppendLine("FROM ");
                sb.AppendFormat(1, "{0} ", Visit(deleteExpression.FromExpression));
            }


            if (!deleteExpression.WhereExpression.IsNull())
            {
                sb.AppendLine();
                sb.AppendLine("WHERE ");
                sb.AppendFormat(1, "{0} ", Visit(deleteExpression.WhereExpression));
            }

            return(ExpressionFactory.Sql(sb.ToString().Trim()));
        }
        /// <summary>
        /// Translates the <paramref name="deleteExpression"/> into a string representation.
        /// </summary>
        /// <param name="deleteExpression">The <see cref="DbDeleteExpression"/> to translate.</param>
        /// <returns><see cref="DbExpression"/></returns>
        protected virtual DbExpression  VisitDeleteExpression(DbDeleteExpression deleteExpression)
        {
            var targetExpression = Visit(deleteExpression.Target);
            var fromExpression   = Visit(deleteExpression.FromExpression);
            var whereExpression  = Visit(deleteExpression.WhereExpression);

            if (!ReferenceEquals(targetExpression, deleteExpression.Target) ||
                !ReferenceEquals(fromExpression, deleteExpression.FromExpression) ||
                !ReferenceEquals(whereExpression, deleteExpression.WhereExpression))
            {
                return(ExpressionFactory.Delete(targetExpression, fromExpression, whereExpression));
            }
            return(deleteExpression);
        }
        /// <summary>
        /// Translates the <paramref name="deleteExpression"/> into a string representation.
        /// </summary>
        /// <param name="deleteExpression">The <see cref="DbDeleteExpression"/> to translate.</param>
        /// <returns><see cref="string"/></returns>
        protected override DbExpression VisitDeleteExpression(DbDeleteExpression deleteExpression)
        {
            var sb = new StringBuilder();

            if (deleteExpression.FromExpression.IsNull())
            {
                sb.AppendFormat("DELETE FROM {0} ", Visit(deleteExpression.Target));
            }
            else
            {
                var aliasExpression = deleteExpression.FromExpression.Find<DbAliasExpression>(ae => ae.Target.Equals(deleteExpression.Target)).FirstOrDefault();
                if (aliasExpression.IsNull())
                    sb.AppendFormat("DELETE {0} ", Visit(deleteExpression.Target));
                else
                    sb.AppendFormat("DELETE {0} ", aliasExpression.Alias);
                sb.AppendLine();
                sb.AppendLine("FROM ");
                sb.AppendFormat(1, "{0} ", Visit(deleteExpression.FromExpression));
            }

            if (!deleteExpression.WhereExpression.IsNull())
            {
                sb.AppendLine();
                sb.AppendLine("WHERE ");
                sb.AppendFormat(1, "{0} ", Visit(deleteExpression.WhereExpression));
            }

            return ExpressionFactory.Sql(sb.ToString().Trim());
        }
 /// <summary>
 /// Creates a new <see cref="DbDeleteExpression"/> that represents delete statement.
 /// </summary>
 /// <param name="target">The <see cref="DbExpression"/> that represents the delete target.</param>
 /// <param name="fromExpression">The <see cref="DbExpression"/> that represents the 'FROM' clause of the query.</param>
 /// <param name="whereExpression">the <see cref="DbExpression"/> that represents the 'WHERE' clause of the query.</param>
 /// <returns>A <see cref="DbDeleteExpression"/> instance.</returns>
 public DbDeleteExpression Delete(DbExpression target, DbExpression fromExpression, DbExpression whereExpression)
 {
     var dbDeleteExpression = new
         DbDeleteExpression
                                  {
                                      Target = target,
                                      FromExpression = fromExpression,
                                      WhereExpression = whereExpression
                                  };
     return dbDeleteExpression;
 }
 /// <summary>
 /// Translates the <paramref name="deleteExpression"/> into a string representation.
 /// </summary>
 /// <param name="deleteExpression">The <see cref="DbDeleteExpression"/> to translate.</param>
 /// <returns><see cref="DbExpression"/></returns>
 protected virtual DbExpression VisitDeleteExpression(DbDeleteExpression deleteExpression)
 {
     var targetExpression = Visit(deleteExpression.Target);
     var fromExpression = Visit(deleteExpression.FromExpression);
     var whereExpression = Visit(deleteExpression.WhereExpression);
     if (!ReferenceEquals(targetExpression,deleteExpression.Target) ||
         !ReferenceEquals(fromExpression,deleteExpression.FromExpression) ||
         !ReferenceEquals(whereExpression,deleteExpression.WhereExpression))
     {
         return ExpressionFactory.Delete(targetExpression, fromExpression, whereExpression);
     }
     return deleteExpression;
 }