Skip to content

SqlLinqer 2.2.0

Choose a tag to compare

@Nulifyer Nulifyer released this 22 Oct 00:22

SqlLinqer 2.2.0 is a stable minor release with additional database providers, asynchronous execution, result streaming, and fixes for complex projections and result loading. The library continues to target .NET Standard 2.0.

Added

  • Azure SQL, SQLite, and DuckDB integration alongside SQL Server, PostgreSQL, and MySQL.
  • Asynchronous query execution and JSON result streaming, including cancellation and cleanup after early enumeration exit.
  • Detached query snapshots for repeated or concurrent compilation.
  • Typed SQL Server procedure contracts and expanded table-valued parameter support.

Fixed

  • Multi-level BuildQuery relationship projections, repeated relationship paths, and independent projection aliases.
  • Automatic grouping for Concat, CASE expressions, mixed scalar and aggregate expressions, and relationships with additional correlation predicates.
  • Nested projected ordering, paging, and total counts without multiplying root rows.
  • MySQL computed grouping and PostgreSQL/MySQL DISTINCT ordering with JSON projections, including binary and nested relationship values.
  • JSON numbers and booleans loading into string members, including exact numeric token text and legacy boolean casing.
  • Immutable and read-only collections, native row aliases, generated inserts, SQL Server TVP decimal precision, and connector schema isolation.
  • Caller transaction ownership and cleanup after execution errors or cancellation.

Performance

Span-based binary decoding, UTF-8 member matching, pooled JSON buffers, and cached native mapping plans reduce intermediate allocations.

Behavior changes since 2.1.0

  • SQL result loading follows SqlLinqer mappings and ignores application JSON serialization attributes and converters. Use SqlIgnore to exclude SQL members.
  • Numeric conversions reject fractional-to-integer values and overflow. Offset-bearing text loads as UTC DateTime, and DateTimeOffset requires an explicit offset.
  • Callers retain ownership of supplied transactions and connections, including responsibility for rollback after errors or cancellation.
  • Newtonsoft.Json is no longer a transitive dependency. Applications that use it directly need their own package reference.

Validation

The release commit passed 3,108 checks across regression, SQLite, DuckDB, SQL Server, PostgreSQL/MySQL integration, and scale suites. This includes 190 live SQL Server checks with synchronous, asynchronous, and streaming coverage.

The same 27 compatibility fixtures pass against both 2.1.0 and this release. Minimum SQLite 3.38, .NET 10 and .NET Framework 4.8 compatibility builds, formatting, and runner checks also passed. .NET Framework 4.8 runtime execution and an actual Azure SQL endpoint were not exercised.

Changes since 2.1.0