Skip to content

Update dependency linq2db to 6.5.0 - #38

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 Aug 7, 2026

Copy link
Copy Markdown

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
linq2db (source) 6.3.06.5.0 age adoption passing 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 filtersHasQueryFilter(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


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 e34f67c to 6e4290c Compare August 29, 2026 05:49
@renovate
renovate Bot force-pushed the renovate/linq2db-6.x branch from 6e4290c to 0a3db35 Compare September 12, 2026 19:40
@renovate renovate Bot changed the title Update dependency linq2db to 6.4.0 Update dependency linq2db to 6.5.0 Sep 12, 2026
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