Query
Represents a composable SQL query built from a sequence of render actions.
Propiedades
public IList<Action<ISqlDialect, StringBuilder>> Actions { get; }
value = query.Actions
List of render actions that produce the SQL text.
Métodos
public Query AddAction(Action<ISqlDialect, StringBuilder> action)
result = query.AddAction(action)
Adds a render action to the query.
- action
- Action that appends SQL text to a StringBuilder.
public Query All(string tableAlias)
result = query.All(tableAlias)
Appends alias.* to select all columns from a table alias.
- tableAlias
- Table alias.
public Query Between(string lowParameter, string highParameter)
result = query.Between(lowParameter, highParameter)
Appends a BETWEEN clause referencing two parameters by name. The dialect prepends its own prefix (e.g. @, $) at render time so callers must pass plain parameter names — passing raw values here would land them as literals in the SQL and is not supported.
- lowParameter
- Lower bound parameter name (no prefix).
- highParameter
- Upper bound parameter name (no prefix).
public Query CloseBracket()
result = query.CloseBracket()
Appends a closing parenthesis.
public Query Column(string column)
result = query.Column(column)
Appends a quoted column reference.
- column
- Column name.
public Query Column(string owner, string column)
result = query.Column(owner, column)
Appends a qualified column reference (owner.column).
- owner
- Table alias or owner name.
- column
- Column name.
public Query Concat()
result = query.Concat()
Appends dialect-specific string concatenation operator (+ for SQL Server, || for PostgreSQL/SQLite).
public void CopyTo(Query destination)
query.CopyTo(destination)
Copies all actions from this query to the query.
- destination
- Target query to copy actions into.
public static Query CreateBuildCondition(string column, ComparisonOperator op, string paramName, bool castNumericComparison)
result = Query.CreateBuildCondition(column, op, paramName, castNumericComparison)
Creates a single WHERE condition.
public static Query CreateBuildInCondition(string column, IEnumerable<string> paramNames)
result = Query.CreateBuildInCondition(column, paramNames)
Creates an IN condition.
public static Query CreateCreateTable(string tableName, IDictionary<string, Type> columns, string identityColumn, IEnumerable<string> primaryKeyColumns)
result = Query.CreateCreateTable(tableName, columns, identityColumn, primaryKeyColumns)
Creates a CREATE TABLE query.
- tableName
- Table name.
- columns
- Column definitions (name → CLR type).
- identityColumn
- Optional auto-increment identity column name.
- primaryKeyColumns
- Optional primary key column(s) (without auto-increment). Ignored when is set.
public static Query CreateDelete(string tableName, string whereClause)
result = Query.CreateDelete(tableName, whereClause)
Creates a DELETE query.
public static Query CreateDropTable(string tableName)
result = Query.CreateDropTable(tableName)
Creates a DROP TABLE query.
public static Query CreateInsert(string tableName, IEnumerable<string> columns)
result = Query.CreateInsert(tableName, columns)
Creates an INSERT query.
public static Query CreateInsert(string tableName, IEnumerable<string> columns, string returningIdColumn)
result = Query.CreateInsert(tableName, columns, returningIdColumn)
Creates an INSERT query that optionally appends a dialect-specific RETURNING clause for the given identity column. Useful for PostgreSQL, where a single-statement INSERT…RETURNING is the only pool-safe way to read back a server-generated identity. Pass for non-identity inserts and for dialects that read identity via a separate select (SqlServer/SQLite).
public static Query CreateSelect(string tableName, string whereClause, string orderByClause, long? skip, long? take)
result = Query.CreateSelect(tableName, whereClause, orderByClause, skip, take)
Creates a SELECT query with optional pagination.
public static Query CreateUpdate(string tableName, IEnumerable<string> columns, string whereClause)
result = Query.CreateUpdate(tableName, columns, whereClause)
Creates an UPDATE query.
public static Query CreateUpsert(string tableName, IEnumerable<string> allColumns, IEnumerable<string> keyColumns)
result = Query.CreateUpsert(tableName, allColumns, keyColumns)
Creates an UPSERT (INSERT or UPDATE) query.
public Query Equals(string tableAlias, string[] columns)
result = query.Equals(tableAlias, columns)
Appends equality conditions for the specified columns joined with AND.
- tableAlias
- Table alias used in column references.
- columns
- Column names to compare against parameters.
public Query Escape(char escapeChar)
result = query.Escape(escapeChar)
Appends an ESCAPE clause declaring as the escape character of the preceding LIKE pattern.
- escapeChar
- Escape character, normally EscapeChar.
Devuelve: This query.
public Query Exact(string tableAlias, string[] columns)
result = query.Exact(tableAlias, columns)
Appends a comma-separated list of specific columns from a table alias.
- tableAlias
- Table alias.
- columns
- Column names to include.
public Query FormatMessage()
result = query.FormatMessage()
Appends FORMATMESSAGE function name.
public Query Identity(string idCol)
result = query.Identity(idCol)
Appends the dialect-specific identity select expression.
- idCol
- Identity column name.
public Query Into(string tableName, string[] columns)
result = query.Into(tableName, columns)
Appends INTO clause with table name and column list.
- tableName
- Target table name.
- columns
- Column names for the insert.
public Query IsFalse()
result = query.IsFalse()
Appends dialect-specific boolean false comparison (= 0 for SQL Server/SQLite, = FALSE for PostgreSQL).
public Query IsNull()
result = query.IsNull()
Appends dialect-aware null-coalescing function name (ISNULL for SQL Server, COALESCE for PG/SQLite).
public Query IsNull(string columnName)
result = query.IsNull(columnName)
Appends a column IS NULL condition.
- columnName
- Column name to check.
public Query IsParamNull(string columnName)
result = query.IsParamNull(columnName)
Appends a parameter IS NULL condition.
- columnName
- Parameter name to check.
public Query IsTrue()
result = query.IsTrue()
Appends dialect-specific boolean true comparison (= 1 for SQL Server/SQLite, = TRUE for PostgreSQL).
public Query Len()
result = query.Len()
Appends dialect-specific length function (LEN for SQL Server, LENGTH for PostgreSQL/SQLite).
public Query Like(string columnName)
result = query.Like(columnName)
Appends a LIKE condition for the specified column with a matching parameter. The column name is validated against a conservative identifier shape before being interpolated into SQL — anything else throws so a caller-controlled column name cannot smuggle SQL through the LIKE clause (which previously interpolated both as identifier and parameter name without checks).
- columnName
- Column name to match.
public Query LikeLiteral(Action appendNeedle, bool wildcardBefore, bool wildcardAfter)
result = query.LikeLiteral(appendNeedle, wildcardBefore, wildcardAfter)
Appends a whole LIKE predicate tail that matches literally the text writes: the LIKE keyword, the requested wildcards, the needle wrapped in nested REPLACE calls neutralising every Metacharacters, and the ESCAPE clause declaring EscapeChar.
- appendNeedle
- Appends the needle expression — a bound parameter, a column, any expression.
- wildcardBefore
- Match any text before the needle.
- wildcardAfter
- Match any text after the needle.
Devuelve: This query.
public Query Param(string name)
result = query.Param(name)
Appends a dialect-prefixed parameter reference.
- name
- Parameter name.
public Query Raw(string name)
result = query.Raw(name)
Appends a raw SQL string.
- name
- Raw SQL text to append.
public virtual string Render(ISqlDialect dialect)
result = query.Render(dialect)
Renders the query to a SQL string using the specified dialect.
- dialect
- SQL dialect used for quoting and formatting.
Devuelve: Rendered SQL string.
public Query Returning(string idColumn)
result = query.Returning(idColumn)
Appends a dialect-specific RETURNING clause to the previous INSERT in this query (no-op for dialects that don't support it).
public Query Set(string tableAlias, string[] columns)
result = query.Set(tableAlias, columns)
Appends a SET clause assigning parameterized values to columns.
- tableAlias
- Table alias used in the assignment.
- columns
- Column names to set.
public Query Skip(string skip)
result = query.Skip(skip)
Appends dialect-specific SKIP (OFFSET) clause.
- skip
- Parameter name for the number of rows to skip.
public Query SysNow()
result = query.SysNow()
Appends dialect-specific SYSDATETIME() expression.
public Query SysUtcNow()
result = query.SysUtcNow()
Appends dialect-specific SYSUTCDATETIME() expression.
public Query Table(string tableName, string alias)
result = query.Table(tableName, alias)
Appends a quoted table name followed by its alias.
- tableName
- Table name.
- alias
- Table alias.
public Query Take(string take)
result = query.Take(take)
Appends dialect-specific TAKE (LIMIT/FETCH) clause.
- take
- Parameter name for the number of rows to take.
public Query Top(long top)
result = query.Top(top)
Appends TOP clause with the specified row count.
- top
- Maximum number of rows.
public Query Update(string tableName)
result = query.Update(tableName)
Appends UPDATE keyword with the specified table name.
- tableName
- Table name to update.
public Query Values(string[] valueNames)
result = query.Values(valueNames)
Appends a VALUES clause with parameterized value placeholders.
- valueNames
- Parameter names for the values.
Campos
public const string SkipParameterName
value = Query.SkipParameterName
Parameter name used for SELECT pagination offset.
public const string TakeParameterName
value = Query.TakeParameterName
Parameter name used for SELECT pagination limit.
public Queue<Action<bool, Query>> WrapColumn
value = query.WrapColumn
Queue of wrapping actions applied around column references. Translation-scoped: a single instance is shared between all Query objects produced for one query translation pass and is mutated single-threaded by that pass. Concurrent use across translation Contexts is not supported. The Boolean argument signals direction: true before the column is emitted, false after.