Skip to content

Releases: seesharper/DbReader

4.2.1

24 Feb 13:26
3774723

Choose a tag to compare

Change Log

4.2.1 (02/24/2026)

Full Changelog

Merged Pull Requests

Use AsyncLocal instead of ThreadStatic for SqlStatement.Current (02/24/2026) #79 (seesharper)

Summary

  • SqlStatement.Current was annotated with [ThreadStatic], which stores values per OS thread
  • With async/await, continuations can resume on a different thread pool thread (especially after .ConfigureAwait(false)), causing SqlStatement.Current to be null or stale in the async read path
  • Replaced with AsyncLocal<string>, which flows through ExecutionContext and correctly tracks the value across await boundaries
  • Public API is unchanged — callers read/write SqlStatement.Current the same way

Test plan

  • All 225 existing tests pass
  • Verify async reads (ReadAsync, ReadWithoutNavigationPropertiesAsync) correctly use the cache key across thread switches

🤖 Generated with Claude Code

4.2.0

19 Feb 19:13
15ed9e8

Choose a tag to compare

Change Log

4.2.0 (02/19/2026)

Full Changelog

Merged Pull Requests

Use ReadAsync in the async read path (02/19/2026) #78 (seesharper)

Summary

  • Added ReadAsync<T> extension method on DbDataReader in DataReaderExtensions
  • Added ReadWithNavigationPropertiesAsync<T> and ReadWithoutNavigationPropertiesAsync<T> that use DbDataReader.ReadAsync instead of the synchronous Read
  • Updated DbConnectionExtensions.ReadAsync<T> to call the new async read path instead of the synchronous dataReader.Read<T>()

Test plan

  • All 225 existing tests pass

🤖 Generated with Claude Code

4.1.0

14 Dec 22:38
29e2e43

Choose a tag to compare

Change Log

4.1.0 (12/14/2025)

Full Changelog

Merged Pull Requests

Read single (12/14/2025) #77 (seesharper)

4.0.1

15 Apr 18:03
0e796a1

Choose a tag to compare

Change Log

4.0.1 (04/15/2025)

Full Changelog

Merged Pull Requests

Deferred command disposal (04/15/2025) #74 (seesharper)

This PR ensures that the command is not disposed until the reader is disposed

4.0.0

16 Mar 21:08
3e54d31

Choose a tag to compare

Change Log

4.0.0 (03/16/2025)

Full Changelog

Merged Pull Requests

Rename to DbClient (03/16/2025) #73 (seesharper)

3.0.0

11 Mar 16:23
8967df8

Choose a tag to compare

Change Log

3.0.0 (03/11/2025)

Full Changelog

Merged Pull Requests

Added DbReader.Tracking (03/11/2025) #72 (seesharper)

This PR adds support for tracking changes made to an object.
See the the readme for more information

2.7.1

10 Jan 14:02
b3b9ce3

Choose a tag to compare

Change Log

2.7.1 (01/10/2025)

Full Changelog

Merged Pull Requests

Fixed default value when there value is NOT DbNull (01/10/2025) #71 (seesharper)

2.7.0

19 Nov 16:31
9a9c923

Choose a tag to compare

Change Log

2.7.0 (11/19/2024)

Full Changelog

Merged Pull Requests

Added WithDefaultValue (11/19/2024) #70 (seesharper)

2.6.1

02 Jun 12:32
6e8cb6a

Choose a tag to compare

Change Log

2.6.1 (06/02/2024)

Full Changelog

Merged Pull Requests

Added configureCommand (06/02/2024) #68 (seesharper)

2.6.0

12 Sep 13:14
df0338e

Choose a tag to compare

Change Log

2.6.0 (09/12/2023)

Full Changelog

Merged Pull Requests

Added support for "camel humps" for simple properties (09/12/2023) #67 (seesharper)