Skip to content

SqlLinqer 2.3.0

Choose a tag to compare

@Nulifyer Nulifyer released this 26 Oct 17:22

SqlLinqer 2.3.0 is the stable release of 2.3.0-rc.2. It includes matching versions of SqlLinqer, SqlLinqer.Diagnostics, and SqlLinqer.Extensions.DependencyInjection. All packages target .NET Standard 2.0. Runtime source is unchanged from RC2; the release also includes the subsequent documentation corrections and repository MIT license.

Added

  • Connector-bound query factories for ordinary mapped classes, plus EnsureSuccess and GetResultOrThrow response helpers.
  • Connection factories can configure each newly created connection. Per-query command timeouts override connector defaults.
  • Independent CountRelated and SumRelated projections aggregate mapped collections without multiplying sibling rows.
  • Optional provider-native interruption callbacks support cancellation and execution deadlines, including running SQLite queries.
  • Query tags, execution IDs, and compiler command roles correlate buffered, paged, and streaming operations.
  • Optional dependency injection registrations and ILogger/ActivitySource diagnostics packages, published together with core.
  • Runtime diagnostics configuration, bounded parameter details, and independent opt-ins for SQL logs, SQL activities, values, and full exceptions.

Fixed

  • Preserve nested projected ordering and remove allocations on compilation cache hits.
  • Avoid SQLite write locks during read totals and omit unused grouped measures from count queries.

Migration from 2.2.0

The stored-procedure API includes breaking changes. Replace direct StoredProcedureQuery and BeginStoredProcedure usage, three-type callables, and Call with SqlLinqerCallable<TInput, TOutput> and Execute/ExecuteAsync. Map procedure names with SqlProcedure, input members with SqlParameter, and row members with SqlColumn. SqlCallableResponse<T> replaces SqlStoredProcedureResponse<T>. Custom result-set/output attributes were removed. Null ordinary inputs omit parameters to allow database defaults; use SqlArgument to send explicit SQL NULL. See the stored-procedure guide.

For applications adopting the RC diagnostics APIs, routine completions use Debug and SQL/binding details use Trace with explicit opt-ins. IncludeSql remains an alias for log SQL only; configure IncludeSqlInActivities separately. See the diagnostics guide.

Install version 2.3.0 consistently across core and any optional SqlLinqer packages.

Validation

The release workflow passed all validation, packing, and NuGet publishing jobs. Validation covered: local regression, SQLite, DuckDB, disposable PostgreSQL/MySQL/SQL Server suites, .NET 10 and .NET Framework 4.8 compatibility builds, adoption integration and HTTP checks, formatting, stable SQL JSON contracts, and minimum SQLite 3.38 checks. The disposable-database run completed 3,680 checks across six suites with no failures. Actual Azure SQL and .NET Framework 4.8 runtime execution are not covered.

Changes since 2.2.0

Publication verification

All three stable packages are published and indexed on nuget.org: SqlLinqer 2.3.0, SqlLinqer.Diagnostics 2.3.0, and SqlLinqer.Extensions.DependencyInjection 2.3.0.

A consumer restored all three from nuget.org into a fresh package cache without project references. All 55 integration checks passed. Public package metadata identifies release commit af98b0dde526793f30dcf5e2e089e15cd769724f, includes MIT licensing and XML documentation, and declares matching core dependencies.