Jaunty API Reference Summary
Complete API Overview
This document provides a comprehensive summary of all public APIs available in Jaunty, organized by functionality.
Query Methods
Basic Query Operations
Query<T>(string sql)- Execute query with strict mappingQuery<T>(string sql, object parameters)- Execute parameterized query with strict mappingQuery<T>(string sql, CommandOptions<T> options)- Execute query with options using strict mappingQuery<T>(string sql, object parameters, CommandOptions<T> options)- Execute parameterized query with options using strict mapping
Partial Query Operations
QueryPartial<T>(string sql)- Execute query with partial mappingQueryPartial<T>(string sql, object parameters)- Execute parameterized query with partial mappingQueryPartial<T>(string sql, CommandOptions<T> options)- Execute query with options using partial mappingQueryPartial<T>(string sql, object parameters, CommandOptions<T> options)- Execute parameterized query with options using partial mapping
Single Result Query Operations
QueryFirst<T>(string sql)- Get first result with strict mappingQueryFirstOrDefault<T>(string sql)- Get first result or default with strict mappingQuerySingle<T>(string sql)- Get single result with strict mappingQuerySingleOrDefault<T>(string sql)- Get single result or default with strict mapping
Scalar Query Operations
QueryScalar<T>(string sql)- Get scalar valueQueryScalar<T>(string sql, object parameters)- Get scalar value from parameterized queryQueryScalar<T>(string sql, CommandOptions<T> options)- Get scalar value with optionsQueryScalar<T>(string sql, object parameters, CommandOptions<T> options)- Get scalar value from parameterized query with options
Async Query Methods
Async Basic Query Operations
ValueTask<List<T>> QueryAsync<T>(string sql, CancellationToken cancellationToken = default)ValueTask<List<T>> QueryAsync<T>(string sql, object parameters, CancellationToken cancellationToken = default)ValueTask<List<T>> QueryAsync<T>(string sql, CommandOptions<T> options, CancellationToken cancellationToken = default)ValueTask<List<T>> QueryAsync<T>(string sql, object parameters, CommandOptions<T> options, CancellationToken cancellationToken = default)
Async Single Result Operations
ValueTask<T> QueryFirstAsync<T>(string sql, CancellationToken cancellationToken = default)ValueTask<T?> QueryFirstOrDefaultAsync<T>(string sql, CancellationToken cancellationToken = default)ValueTask<T> QuerySingleAsync<T>(string sql, CancellationToken cancellationToken = default)ValueTask<T?> QuerySingleOrDefaultAsync<T>(string sql, CancellationToken cancellationToken = default)
Async Scalar Operations
ValueTask<T> QueryScalarAsync<T>(string sql, CancellationToken cancellationToken = default)ValueTask<T> QueryScalarAsync<T>(string sql, object parameters, CancellationToken cancellationToken = default)ValueTask<T> QueryScalarAsync<T>(string sql, CommandOptions<T> options, CancellationToken cancellationToken = default)ValueTask<T> QueryScalarAsync<T>(string sql, object parameters, CommandOptions<T> options, CancellationToken cancellationToken = default)
Streaming Methods
Synchronous Streaming
IEnumerable<T> QueryStream<T>(string sql)- Stream results with strict mappingIEnumerable<T> QueryStream<T>(string sql, object parameters)- Stream parameterized results with strict mappingIEnumerable<T> QueryStream<T>(string sql, CommandOptions<T> options)- Stream results with options using strict mappingIEnumerable<T> QueryStream<T>(string sql, object parameters, CommandOptions<T> options)- Stream parameterized results with options using strict mapping
Asynchronous Streaming
IAsyncEnumerable<T> QueryStreamAsync<T>(string sql, [EnumeratorCancellation] CancellationToken cancellationToken = default)- Async stream results with strict mappingIAsyncEnumerable<T> QueryStreamAsync<T>(string sql, object parameters, [EnumeratorCancellation] CancellationToken cancellationToken = default)- Async stream parameterized results with strict mappingIAsyncEnumerable<T> QueryStreamAsync<T>(string sql, CommandOptions<T> options, [EnumeratorCancellation] CancellationToken cancellationToken = default)- Async stream results with options using strict mappingIAsyncEnumerable<T> QueryStreamAsync<T>(string sql, object parameters, CommandOptions<T> options, [EnumeratorCancellation] CancellationToken cancellationToken = default)- Async stream parameterized results with options using strict mapping
Partial Streaming
IEnumerable<T> QueryPartialStream<T>(string sql)- Stream results with partial mappingIAsyncEnumerable<T> QueryPartialStreamAsync<T>(string sql, [EnumeratorCancellation] CancellationToken cancellationToken = default)- Async stream results with partial mapping- (Similar overloads with parameters and options)
Multiple Result Set Methods
QueryMultiple
GridReader QueryMultiple(string sql)- Execute multiple result setsGridReader QueryMultiple(string sql, object parameters)- Execute multiple parameterized result setsGridReader QueryMultiple(string sql, CommandOptions options)- Execute multiple result sets with optionsGridReader QueryMultiple(string sql, object parameters, CommandOptions options)- Execute multiple parameterized result sets with options
Async QueryMultiple
ValueTask<GridReader> QueryMultipleAsync(string sql, CancellationToken cancellationToken = default)- Async multiple result setsValueTask<GridReader> QueryMultipleAsync(string sql, object parameters, CancellationToken cancellationToken = default)- Async multiple parameterized result setsValueTask<GridReader> QueryMultipleAsync(string sql, CommandOptions options, CancellationToken cancellationToken = default)- Async multiple result sets with optionsValueTask<GridReader> QueryMultipleAsync(string sql, object parameters, CommandOptions options, CancellationToken cancellationToken = default)- Async multiple parameterized result sets with options
CRUD Operations
Insert Operations
long Insert<T>(T entity)- Insert entity and return identitylong Insert<T>(T entity, CommandOptions options)- Insert entity with options and return identityValueTask<long> InsertAsync<T>(T entity, CancellationToken cancellationToken = default)- Async insert entity and return identityValueTask<long> InsertAsync<T>(T entity, CommandOptions options, CancellationToken cancellationToken = default)- Async insert entity with options and return identity
Update Operations
int Update<T>(T entity)- Update entityint Update<T>(T entity, CommandOptions options)- Update entity with optionsValueTask<int> UpdateAsync<T>(T entity, CancellationToken cancellationToken = default)- Async update entityValueTask<int> UpdateAsync<T>(T entity, CommandOptions options, CancellationToken cancellationToken = default)- Async update entity with options
Delete Operations
int Delete<T>(T entity)- Delete entity by primary keyint Delete<T>(T entity, CommandOptions options)- Delete entity with optionsint Delete<T>(object id)- Delete entity by IDint Delete<T>(object id, CommandOptions options)- Delete entity by ID with optionsValueTask<int> DeleteAsync<T>(T entity, CancellationToken cancellationToken = default)- Async delete entityValueTask<int> DeleteAsync<T>(T entity, CommandOptions options, CancellationToken cancellationToken = default)- Async delete entity with optionsValueTask<int> DeleteAsync<T>(object id, CancellationToken cancellationToken = default)- Async delete entity by IDValueTask<int> DeleteAsync<T>(object id, CommandOptions options, CancellationToken cancellationToken = default)- Async delete entity by ID with options
Upsert Operations
int Upsert<T>(T entity)- Insert or update entity by keyint Upsert<T>(T entity, CommandOptions options)- Insert or update entity with optionsValueTask<int> UpsertAsync<T>(T entity, CancellationToken cancellationToken = default)- Async insert or update entityValueTask<int> UpsertAsync<T>(T entity, CommandOptions options, CancellationToken cancellationToken = default)- Async insert or update entity with options
Upsert return values are provider-specific "rows affected" semantics:
- SQL Server and PostgreSQL typically return
1for a successful insert or update. - MariaDB/MySQL may return
2for an update path (matched + changed rows), and may return1depending on server/client flags.
For cross-provider code, treat any value > 0 as success instead of asserting an exact constant.
Get, GetAll, and Execute Methods
See Get and Execute Operations for full details.
T? Get<T>(object id)/Get<T, TId>(TId id)- Retrieve entity by primary keyT GetRequired<T>(object id)/GetRequired<T, TId>(TId id)- Retrieve entity by primary key, throwing if not foundList<T> GetAll<T>()- Retrieve all rows for a mapped tableIEnumerable<T> GetAllStream<T>()- Lazily stream all rowsGetAsync,GetRequiredAsync,GetAllAsync,GetAllStreamAsync- Async equivalents (requireDbConnection)int Execute(string sql, ...)- Execute a non-query SQL commandint ExecuteBatch(string sql, IEnumerable<object> parameterSets, ...)- Execute the same SQL once per parameter setExecuteAsync,ExecuteBatchAsync- Async equivalents
Multi-Entity Mapping Methods
See Multi-Entity Mapping for full details.
List<(T1,...,TN)> Query<T1,...,TN>(string sql, ...)for N = 2..7 - Map joined query rows into N entity types via left-to-right ordinal claimingQueryFirst<T1,...,TN>,QueryFirstOrDefault<T1,...,TN>,QuerySingle<T1,...,TN>,QuerySingleOrDefault<T1,...,TN>,QueryStream<T1,...,TN>- Same arities, single-result and streaming variantsMultiEntityCommandOptions<T1,...,TN>- Transaction/CommandTimeout/CommandType options carrier for multi-entity queries (no per-position custom mapper support)
Stored Procedure Methods
Basic Stored Procedure Execution
List<T> ExecuteStoredProcedure<T>(string procedureName)- Execute stored procedure and return resultsList<T> ExecuteStoredProcedure<T>(string procedureName, object? parameters)- Execute parameterized stored procedure and return resultsList<T> ExecuteStoredProcedure<T>(string procedureName, object? parameters, CommandOptions<T> options)- Execute parameterized stored procedure with options and return results
Single Result Stored Procedure Methods
T ExecuteStoredProcedureFirst<T>(string procedureName)- Execute stored procedure and return first resultT? ExecuteStoredProcedureFirstOrDefault<T>(string procedureName)- Execute stored procedure and return first result or defaultT ExecuteStoredProcedureSingle<T>(string procedureName)- Execute stored procedure and return single resultT? ExecuteStoredProcedureSingleOrDefault<T>(string procedureName)- Execute stored procedure and return single result or default
Scalar Stored Procedure Methods
T ExecuteStoredProcedureScalar<T>(string procedureName)- Execute stored procedure and return scalar valueT ExecuteStoredProcedureScalar<T>(string procedureName, object? parameters)- Execute parameterized stored procedure and return scalar valueT ExecuteStoredProcedureScalar<T>(string procedureName, object? parameters, CommandOptions options)- Execute parameterized stored procedure with options and return scalar value
Non-Query Stored Procedure Methods
int ExecuteStoredProcedureNonQuery(string procedureName)- Execute stored procedure that doesn't return resultsint ExecuteStoredProcedureNonQuery(string procedureName, object? parameters)- Execute parameterized stored procedure that doesn't return resultsint ExecuteStoredProcedureNonQuery(string procedureName, object? parameters, CommandOptions options)- Execute parameterized stored procedure with options that doesn't return results
Async Stored Procedure Methods
ValueTask<List<T>> ExecuteStoredProcedureAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async stored procedure executionValueTask<T> ExecuteStoredProcedureFirstAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async first result from stored procedureValueTask<T?> ExecuteStoredProcedureFirstOrDefaultAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async first result or default from stored procedureValueTask<T> ExecuteStoredProcedureSingleAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async single result from stored procedureValueTask<T?> ExecuteStoredProcedureSingleOrDefaultAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async single result or default from stored procedureValueTask<T> ExecuteStoredProcedureScalarAsync<T>(string procedureName, CancellationToken cancellationToken = default)- Async scalar from stored procedureValueTask<int> ExecuteStoredProcedureNonQueryAsync(string procedureName, CancellationToken cancellationToken = default)- Async non-query stored procedure
Stored Procedure Methods with SpParameters
- Methods supporting input, output, and return parameters using the
SpParametersclass
Fluent API
Entry Point
IFromClause<T> From<T>(this IDbConnection connection, string? alias = null)- Start fluent query
Fluent Query Methods
IWhereClause<T> Where(...)- Add WHERE conditionsIOrderByClause<T> OrderBy(...)- Add ORDER BY clausesIJoinClause<T, TJoin> InnerJoin<TJoin>()- Add INNER JOINIJoinClause<T, TJoin> LeftJoin<TJoin>()- Add LEFT JOINIDistinctClause<T> Distinct()- Add DISTINCTIPagedClause<T> Take(int count)- Add LIMIT/TOPIPagedClause<T> Skip(int count)- Add OFFSET
Fluent Terminal Operations
List<T> Select()- Execute query and return all resultsT SelectFirst()- Execute query and return first resultT? SelectFirstOrDefault()- Execute query and return first result or defaultT SelectSingle()- Execute query and return single resultT? SelectSingleOrDefault()- Execute query and return single result or defaultint Count()- Execute query and return countTResult Sum<TResult>(Expression<Func<T, TResult>> selector)- Execute query and return sumTask<List<T>> SelectAsync(...)- Async versions of all terminal operations
Configuration
JauntyConfig Class
SchemaNameResolver- Global schema name resolverTableNameResolver- Global table name resolverColumnNameResolver- Global column name resolverDefaultEnumStorage- Global default enum storage strategy (numeric or string)RegisterTypeHandler<T>(fromDb, toDb)/RegisterTypeHandler<T>(TypeHandler<T>)- Register a custom type handlerRemoveTypeHandler<T>()- Remove a registered type handlerReset()- Reset all configuration to defaults
CommandOptions Struct
WithMapper(Func<IDataReader, T> mapper)- Create options with custom mapperWithTransaction(IDbTransaction transaction)- Create options with transactionWithTimeout(int seconds)- Create options with timeout
Attributes
Available Attributes
[Table("name", Schema = "schema")]- Map class to table[Column("name")]- Map property to column[Ignore]- Exclude property from mapping[Key]- Mark property as primary key[DatabaseGenerated(DatabaseGeneratedOption option)]- Specify database generation behavior[EnumStorage(EnumStorage storage)]- Override enum storage strategy for a single property
GridReader Methods
GridReader Read Methods
List<T> Read<T>()- Read next result set with strict mappingList<T> ReadPartial<T>()- Read next result set with partial mappingT ReadFirst<T>()- Read first from next result set with strict mappingT? ReadFirstOrDefault<T>()- Read first or default from next result set with strict mappingT ReadSingle<T>()- Read single from next result set with strict mappingT? ReadSingleOrDefault<T>()- Read single or default from next result set with strict mappingT? ReadScalar<T>()- Read scalar from next result setIEnumerable<T> ReadStream<T>()- Read next result set as stream with strict mappingIEnumerable<T> ReadPartialStream<T>()- Read next result set as stream with partial mapping
Async GridReader Methods
Task<List<T>> ReadAsync<T>()- Async read next result set with strict mappingTask<T> ReadFirstAsync<T>()- Async read first from next result set with strict mappingTask<T?> ReadFirstOrDefaultAsync<T>()- Async read first or default from next result set with strict mappingTask<T> ReadSingleAsync<T>()- Async read single from next result set with strict mappingTask<T?> ReadSingleOrDefaultAsync<T>()- Async read single or default from next result set with strict mappingTask<T?> ReadScalarAsync<T>()- Async read scalar from next result setIAsyncEnumerable<T> ReadStreamAsync<T>()- Async read next result set as stream with strict mappingIAsyncEnumerable<T> ReadPartialStreamAsync<T>()- Async read next result set as stream with partial mapping
Key Concepts
Mapping Modes
- Strict Mode (default): All entity properties must have matching columns in result set
- Partial Mode: Only map properties with matching columns, ignore missing ones
Connection Requirements
- Synchronous operations:
IDbConnection - Asynchronous operations:
DbConnection(required for async methods that access data reader)
Error Handling
- Jaunty provides descriptive error messages for mapping failures
- Strict mode fails fast with clear error messages
- Partial mode allows missing columns but maps only available ones
Performance Considerations
- Metadata is cached per-type for optimal performance
- Expression trees are compiled once and reused
- Connection state is respected (opens if closed, leaves open if already open)