Skip to main content

SqlDeleteBuilder

SqlDeleteBuilder<T> builds parameterized DELETE statements.

var result = new SqlDeleteBuilder<User>(new SqlServerDialect())
.From("Users")
.Where(w => w.EqualTo(x => x.Id, 42))
.Build();
// → DELETE FROM [Users] WHERE [Id] = @pw0

Safety: By default, Build() throws if no WHERE clause is set. Call AllowDeleteAll() to explicitly allow deleting all rows.


From (Delete)

Signature

SqlDeleteBuilder<T> From(string tableName, string? schema = null)

Description Sets the target table name and optional schema.


Where (Delete)

Four overloads — same semantics as SqlUpdateBuilder:

SqlDeleteBuilder<T> Where(SqlWhereBuilder<T> whereBuilder)
SqlDeleteBuilder<T> Where(Action<SqlWhereBuilder<T>> configure)
SqlDeleteBuilder<T> Where(Expression<Func<T, bool>> predicate)
SqlDeleteBuilder<T> Where(ValiFlow<T> filter)

OutputDeleted

Signature

SqlDeleteBuilder<T> OutputDeleted()

Description Appends OUTPUT DELETED.* after DELETE FROM. SQL Server only — returns the deleted rows.

Example

builder.From("Users").Where(x => x.Id == 42).OutputDeleted().Build();
// → DELETE FROM [Users] OUTPUT DELETED.* WHERE [Id] = @p0

Returning (Delete)

Signature

SqlDeleteBuilder<T> Returning(params Expression<Func<T, object>>[] columns)

Description Appends RETURNING * or specified columns. PostgreSQL / SQLite only.

Example

builder.From("Users").Where(x => x.Id == 42).Returning(x => x.Id, x => x.Name).Build();
// → DELETE FROM "Users" WHERE "Id" = @p0 RETURNING "Id", "Name"

AllowDeleteAll

Signature

SqlDeleteBuilder<T> AllowDeleteAll()

Description Explicitly allows generating a DELETE without a WHERE clause (affects all rows).


Tag (Delete)

Signature

SqlDeleteBuilder<T> Tag(string description)

Description Labels the query with a SQL comment.


Build (Delete)

Signature

SqlQueryResult Build()

Description Assembles and returns the final SqlQueryResult.


Advanced Example

var delete = new SqlDeleteBuilder<User>()
.From("Users")
.Where(u => u.IsArchived == true);