Skip to content

Update dependency linq2db to 6.5.0 - #1164

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/linq2db-6.x
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/linq2db-6.x

Conversation

@renovate

@renovate renovate Bot commented Jun 11, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
linq2db (source) 6.2.1 → 6.5.0 age confidence

Release Notes

linq2db/linq2db (linq2db)

v6.5.0: Release 6.5.0

Highlights of this release:

  • ⚠ TimeSpan duration columns — declare the unit an integral column stores with [Duration(…)], and TimeSpan members, arithmetic and comparisons translate to SQL. Date differences now measure elapsed time instead of counting calendar boundaries (#​5750)
  • ⚠ Chained TablesInScopeHint calls now stack instead of silently dropping all but the innermost — .WithUpdLockInScope().WithRowLockInScope() emits both hints (#​5850)
  • UpdateOptimisticWithRefresh refreshes the concurrency token on your entity after an optimistic update, so the same instance can be reused without re-reading the row (#​5643)
  • IInterceptable is public again, so a custom IDataContext can receive interceptors — and a compiled query ending in ToList() / ToArray() now builds (#​5813)
  • Table-per-hierarchy query compilation is back to 5.x speed, and no longer overflows the stack on large models (#​5737)
  • Deep LoadWith chains and entities with many loaded associations build substantially faster on first execution (#​5774)
  • ToListAsync() on a query with LoadWith (or a temp table, or a provider hint) now uses async ADO.NET instead of blocking a thread-pool thread, and Insert / Update / Delete / Merge no longer reject a LoadWith query (#​5809)
  • A LoadWith filter closing over an optional value no longer serves the first closure state's results to every later call — a filtered call could return unfiltered rows, or an unfiltered call return nothing (#​5801)
  • A custom Sql.Extension builder that reads an argument value no longer bakes it into the cached query — a second query with a different value silently ran the first one's SQL (#​5841)
  • A repeated impure expression (counter.Next() twice in one predicate) no longer collapses into a single SQL parameter, which made the second occurrence filter on the first one's value (#​5733)
  • joined != null ? joined.X : fallback inside a Union / Concat branch no longer drops its null check — non-matching rows came back as null or 0 instead of the fallback (#​5831)
  • A set-operation branch whose projection mixes SQL and non-SQL parts ("p_" + id.ToString("N") inside a Concat) no longer fails the whole query (#​5818)
  • Count() over a left join to a grouping with a computed key no longer crashes with "Cannot get field for …" — a paging query that worked for the page failed on the total (#​5802)
  • Eager-loading an association off a GroupBy entity key now works — group d by d.Master into g … g.Key.Details.ToList() (#​5727)
  • db.GetTable<Base>().Insert(() => new Derived { … }) on an inheritance-mapped table no longer throws "Property 'X' is not defined for type 'Base'" (#​5840)
  • Updating through a DTO whose member is typed as a base type of the projected entity no longer fails with "Cannot find target table for UPDATE statement" (#​5766)
  • A recursive CTE whose projection computes over its own columns no longer generates SQL the database rejects with a circular-reference error (#​5764)
  • Sql.Window functions that reference no column — Sql.Window.Count(w => w) == 3 — now translate instead of throwing ServerSideOnlyException (#​5783)
  • Remote contexts no longer leak a client per emulated InsertOrReplace / Upsert — visible on the gRPC and WCF transports, which open a channel per call (#​5762)

Provider-specific highlights:

  • SQL Server / SAP HANA / MySQL — a constant ORDER BY inside a window function is no longer emitted verbatim: it errored on SQL Server and SAP HANA, and MySQL 8 read it as an output-column position and ordered by that column (#​5817)
  • Oracle — bulk copy can send up to 6x fewer statements (64 KB → 384 KB SQL length limit), and BulkCopyOptions.MaxSqlLengthForBatch makes that limit configurable on any provider (#​5828)
  • EF Core — one DbContext type used against two providers in the same process no longer shares a single mapping schema, which gave the second provider the first one's column names and types (#​5780); and two servers of the same family in one process no longer share one cached provider when the context is configured with a DbDataSource or an external DbConnection (#​5808)

linq2db.FSharp:

  • Join and Where predicates that capture an outer range variable now translate, and chained groupJoin … DefaultIfEmpty() emits real LEFT JOINs instead of dropping unmatched rows (#​5701)

LINQPad driver:

  • macOS support on LINQPad 9, and database clients are provisioned per connection instead of all being installed with the driver — the driver also loads on LINQPad 8/9 without requiring the .NET 10 runtime (#​5786)

Packaging:

  • Packages that carry a third-party binary — the T4 provider packages, linq2db.cli and the LINQPad 5 .lpx — now ship a THIRD-PARTY-NOTICES.txt (#​5863)

Full release notes

Nugets

New Contributors

Full Changelog: linq2db/linq2db@v6.4.0...v6.5.0

v6.4.0: Release 6.4.0

Highlights of this release:

  • New Sql.Window.* fluent API for window functions — ranking, offset, value, aggregate, statistical, regression, ordered-set and distribution functions, full ROWS/RANGE/GROUPS frames, named windows, FILTER, NULLS FIRST/LAST and Oracle KEEP, with compile-time safety. Existing Sql.Ext.*().Over() queries keep working unchanged — they run on the new pipeline internally (#​5468)
  • Two new eager-loading strategies for LoadWith / ThenLoad and inline collection projections: KeyedQuery (buffers the parent query and loads children with WHERE key IN (…)) and CteUnion (collapses same-level collections into one UNION ALL CTE). Selectable per query or globally, with automatic fallback (#​5450)
  • Named (keyed) query filters — HasQueryFilter(key, …) and selective IgnoreFilters(keys), mirroring the EF Core 10 API, including EF Core keyed-filter flow-through (#​5525)
  • Fluent Upsert plus entity-based Insert(item, …) / Update(item, …) DML APIs (#​5482)
  • linq2db.Analyzers — a new analyzer package shipped as a dependency of linq2db, with rule L2DB1001 and a code fix that migrates the legacy Sql.Ext window API to Sql.Window. Opt out with EnableLinqToDBAnalyzers (#​5703)
  • Query cache is now bounded with idle eviction and a global cap, preventing unbounded growth in long-running apps with many distinct queries (#​5501)
  • NULLS FIRST / NULLS LAST control on OrderBy / ThenBy with a DataOptions default, rendered natively or emulated across all providers (#​5561)
  • Sql.NewGuid7() and Guid.CreateVersion7() mapping for UUIDv7 generation (#​5648)
  • Automatic mapping of F# 'T option / 'T voption columns after .UseFSharp(), with none stored as NULL (#​5624)
  • New opt-in PreferClientCalculation evaluates non-server-required projection expressions client-side, restoring v5 projection behavior (#​5604)
  • DistinctBy emits native DISTINCT ON on PostgreSQL and DuckDB (#​5630)
  • OptimizeForSequentialAccess became a per-context option, fixing query-cache collisions between sequential and non-sequential reader plans (#​5639)
  • Raw-SQL materialization into records and constructor types now honors [Column] and [ValueConverter], binding by mapped column name rather than parameter name (#​5659)
  • Provider auto-detection works under PublishSingleFile self-contained deployments (#​5489)
  • Fixed corrupted SQL — swapped or duplicated aliases and column names — when one cached parameter-dependent query executed concurrently on multiple threads (#​5657)
  • Two connection leaks fixed: provider version auto-detection left caller-supplied connections open (#​5691), as did the implicit EF Core ToLinqToDB() / ToLinqToDBTable() / GetTable<T>() helpers (#​5378)
  • Other notable fixes: recursive CTE dropping columns on an object-typed projection member (#​5680), InvalidCastException on a local-collection LEFT JOIN feeding decimal arithmetic (#​5587), invalid SQL when subtracting two DateTime/DateTimeOffset columns (#​5581), [ExpressionMethod] running at materialization with IsColumn = false (#​5578), nested member-path mappings throwing in MERGE setters and discriminators (#​5545), InvalidCastException on Contains in a correlated subquery (#​5558), aggregates over a captured local collection turned into SQL subqueries (#​5557), and ORDER BY expressions lifted from a subquery producing invalid SQL (#​5556)

Provider-specific highlights:

  • YDB — now a fully supported provider rather than experimental: schema API, CLI scaffolding, LINQPad driver and broad translation coverage (#​5564)
  • PostgreSQL — v19 dialect with correct IGNORE NULLS / RESPECT NULLS window SQL (#​5644); v11 and v12 dialects, with unsupported window features rejected client-side with a clear exception (#​5687)
  • SQL Server — new [GetSqlDecimal] attribute reads decimal columns whose precision exceeds the CLR decimal range instead of throwing (#​5605)
  • Oracle / Informix — fixed cached queries producing wrong SQL on re-execution when a provider rewrite modified the cached statement in place (#​5723)
  • EF Core — many-to-many (skip navigation) associations now translate to SQL (#​5588); the linq2db query cache no longer misses on every DbContext with pooled contexts or disabled service-provider caching (#​5695)
  • Native AOT — fixed a crash triggered by lambda closures in queries (#​5552); EF Core on Mono / Android AOT — fixed a fatal crash reading model metadata (#​5546)
  • LINQPad — the driver installs again on macOS and Linux from LINQPad's NuGet package manager, broken since 6.2.0 (#​5571)

linq2db.cli:

  • New query, execute and schema commands, plus an MCP server for agent-driven database access (#​5678)

Full release notes

Nugets

New Contributors

Full Changelog: linq2db/linq2db@v6.3.0...v6.4.0

v6.3.0: Release 6.3.0

Highlights of this release:

  • Enum.HasFlag translation
  • string.Concat / string.Join / TrimStart / TrimEnd translation improvements (with many translator-bug fixes uncovered along the way)
  • AsCte builder overload for explicit CTE materialization configuration (PostgreSQL, ClickHouse, DuckDB, SQLite, DuckDB)
  • AsQueryable(db, ...) overload with per-column parameterization control for VALUES clauses
  • Improved Now / UtcNow translation with timezone awareness across providers; providers without TZ gracefully downgrade
  • IgnoreConflicts option for MultipleRows mode BulkCopy on MySql / MariaDB / PostgreSQL / SQLite / DuckDB (thanks @​darko1979)
  • Many other fixes: PostgreSQL array-parameter query cache misses, SqlQueryDependentParams issues, association discovery on interfaces, subquery null-aggregate SQL generation, UPDATE FROM regressions, ValueConverter null handling, CTE column removal, set-operator flattening, Sql.Row converters, predicate null-check optimization, FromSql caching, DropTable(throwExceptionIfNotExists: false) behavior, EXISTS over set queries

Provider-specific highlights:

  • DuckDB — brand-new first-class provider (thanks @​stdray, #​5451), schema introspection, scaffolding via linq2db.cli, LINQPad support
  • Oracle — COALESCE parameter type inference, DateTimeOffset.Now no longer corrupts TIMESTAMP WITH TIME ZONE writes, drop of global temp tables with data now works
  • SQL Server 2025 — vector type fixes
  • SQL Server + Firebird — date conversion fix for DbType="..." mappings
  • ClickHouse — table-hint whitespace fix
  • Access — non-EN locale compatibility re-fixes
  • SAP HANA + DB2 + Firebird — proper SQL escaping in EXECUTE blocks for create/drop tables
  • SAP HANA — DROP TABLE IF NOT EXISTS handled on SQL level
  • EF.Core / SQL Server — UseSequence-defined fields now detected as identity (#​5439)
  • F# support — compatibility with FSharp.Core 10.1.x; record mapping fixes for case-only-distinct member names

linq2db.cli:

  • Per-RID tool packaging. linq2db.cli now ships as per-RID tool packages (win-x64/win-x86/win-arm64/linux-x64/linux-arm64/osx-arm64/osx-x64). dotnet tool install -g linq2db.cli auto-picks the variant for your SDK; add --arch x86 when you need 32-bit (Jet OLE DB; or to match a 32-bit ACE / SqlCe / SAP HANA driver).
  • Breaking: --architecture scaffold option removed — bitness is now fixed at install time. Jet connection strings on a 64-bit process now fail fast with a clear x86-variant hint. See #​5539.

Full release notes

Nugets

What's Changed
New Contributors

Full Changelog: linq2db/linq2db@v6.2.1...v6.3.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from a826fe4 to f8244d4 Compare July 12, 2026 13:05
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from f8244d4 to 0088eeb Compare July 21, 2026 02:44
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 0088eeb to 42f9a0e Compare July 30, 2026 17:46
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 42f9a0e to 05614f9 Compare August 7, 2026 05:46
@renovate renovate Bot changed the title Update dependency linq2db to 6.3.0 Update dependency linq2db to 6.4.0 Aug 7, 2026
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch 2 times, most recently from cf45721 to 4fb3cdd Compare August 14, 2026 17:00
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 4fb3cdd to 7b99b68 Compare August 26, 2026 13:10
@renovate renovate Bot changed the title Update dependency linq2db to 6.4.0 Update dependency linq2db to 6.4.0 - autoclosed Aug 29, 2026
@renovate renovate Bot closed this Aug 29, 2026
@renovate
renovate Bot deleted the renovate/linq2db-6.x branch August 29, 2026 05:47
@renovate renovate Bot changed the title Update dependency linq2db to 6.4.0 - autoclosed Update dependency linq2db to 6.4.0 Aug 29, 2026
@renovate renovate Bot reopened this Aug 29, 2026
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 7b99b68 to 0307e00 Compare August 29, 2026 09:37
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch 2 times, most recently from 11cb3d9 to 2964bac Compare September 11, 2026 20:06
@renovate renovate Bot changed the title Update dependency linq2db to 6.4.0 Update dependency linq2db to 6.5.0 Sep 11, 2026
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 2964bac to 1e5ffb5 Compare September 24, 2026 20:27

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants