//--------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner Microsoft, Microsoft // @backupOwner Microsoft //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Data.Metadata.Edm; using System.Data.Common.CommandTrees.Internal; using System.Data.Common.Utils; namespace System.Data.Common.CommandTrees { /// /// Represents a single row delete operation expressed as a canonical command tree. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] public sealed class DbDeleteCommandTree : DbModificationCommandTree { private readonly DbExpression _predicate; internal DbDeleteCommandTree(MetadataWorkspace metadata, DataSpace dataSpace, DbExpressionBinding target, DbExpression predicate) : base(metadata, dataSpace, target) { EntityUtil.CheckArgumentNull(predicate, "predicate"); this._predicate = predicate; } /// /// Gets an that specifies the predicate used to determine which members of the target collection should be deleted. /// /// /// The predicate can include only the following elements: /// /// Equality expression /// Constant expression /// IsNull expression /// Property expression /// Reference expression to the target /// And expression /// Or expression /// Not expression /// /// public DbExpression Predicate { get { return _predicate; } } internal override DbCommandTreeKind CommandTreeKind { get { return DbCommandTreeKind.Delete; } } internal override bool HasReader { get { // a delete command never returns server-gen values, and // therefore never returns a reader return false; } } internal override void DumpStructure(ExpressionDumper dumper) { base.DumpStructure(dumper); if (this.Predicate != null) { dumper.Dump(this.Predicate, "Predicate"); } } internal override string PrintTree(ExpressionPrinter printer) { return printer.Print(this); } } }