Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ dotnet add package Microsoft.Data.Sqlite
| `Open.Database.Extensions.SqlClient` | The same API on the older `System.Data.SqlClient`. Deprecated: use `MSSqlClient`. |
| `Open.Database.Extensions` | Discontinued. It only referenced Core: use `Open.Database.Extensions.Core`. The last published version is 9.0.3. |

Targets: `netstandard2.0`, `netstandard2.1` and `net10.0` (`MSSqlClient`: `net472` and `net10.0`). Version 11 is a release candidate (`11.0.0-rc.3`): see [What's new in 11](https://open-net-libraries.github.io/Open.Database.Extensions/articles/whats-new-11.html) for the changes, the breaking changes and the known limitations, and the [release notes](https://open-net-libraries.github.io/Open.Database.Extensions/articles/release-notes.html) for earlier versions. Please try it and tell us what you find.
Targets: `netstandard2.0`, `netstandard2.1` and `net10.0` (`MSSqlClient`: `net472` and `net10.0`). Version 11 is a release candidate (`11.0.0-rc.4`): see [What's new in 11](https://open-net-libraries.github.io/Open.Database.Extensions/articles/whats-new-11.html) for the changes, the breaking changes and the known limitations, and the [release notes](https://open-net-libraries.github.io/Open.Database.Extensions/articles/release-notes.html) for earlier versions. Please try it and tell us what you find.

## How it fits together

Expand Down
2 changes: 1 addition & 1 deletion Source/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<VersionPrefix>11.0.0</VersionPrefix>
<VersionSuffix Condition="'$(Configuration)' == 'Debug'">debug</VersionSuffix>
<!-- Release candidate line: delete this element (or pass -p:VersionSuffix=) to build the stable 11.0.0 packages. -->
<VersionSuffix Condition="'$(Configuration)' != 'Debug'">rc.3</VersionSuffix>
<VersionSuffix Condition="'$(Configuration)' != 'Debug'">rc.4</VersionSuffix>

<!-- net10.0 is the primary/modern target. netstandard2.0/2.1 are retained as shimmed
legacy paths (via #if switching + BCL compat packages). net472 lives only on the
Expand Down
7 changes: 5 additions & 2 deletions docsite/articles/whats-new-11.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# What's new in 11

> [!NOTE]
> This is `11.0.0-rc.3`, a release candidate. The API is settled. Please try it and report what you find.
> This is `11.0.0-rc.4`, a release candidate. The API is settled. Please try it and report what you find.

Version 11 is a performance release and a tidy-up release. Result mapping is rewritten around a cached, typed row reader, column mapping is declared once, NULL and error handling follow simple rules, and stored-procedure parameters can be named from the arguments you already have. See [Performance](performance.md) for what the speed-up does and does not buy you. Coming from 10.x? Read "Upgrading from 10.x" below first.

Expand All @@ -14,11 +14,14 @@ Rebuild consumers of rc.3. Both changes are source-compatible for every call exc

## Changes since rc.3

- `table.Map<T>()` maps a DataTable you already have (a `MappedTable<T>`; each terminal reads through its own DataTableReader).
- The asynchronous terminals on a command take the element type: `await command.ToArrayAsync<int>(cancellationToken)` is `Map<int>()` then the terminal. `Map<T>()` of a single value such as `int` reads the first column.
- `reader.Map<T>()` and `command.Map<T>()` map a plain `IDataReader` or `IDbCommand` with the same terminals as an expressive command's `Map<T>()`. The reader is never opened, closed, disposed or advanced to the next result set; a command opens and closes only the connection it opened. See [Mapping a reader or a command you already have](mapping.md#mapping-a-reader-or-a-command-you-already-have).
- `table.Map<T>()` maps a DataTable you already have (a `MappedTable<T>`; each terminal reads through its own DataTableReader).
- A null `RowMap<T>` passed to `Map<T>(map)` no longer throws `ArgumentNullException`: it maps exactly as `Map<T>()` does (a single value reads the first column).
- A type of your own that implements both `IExecuteReader` and `IDbCommand` (or `IDataReader`) now gets an ambiguous `Map` call (CS0121); cast it to the interface you mean.
- A `default` `MappedQuery<T>` (or `MappedQueryWithSkip<T>`, `MappedQueryWithTake<T>`) now throws `InvalidOperationException` when used, where it threw `NullReferenceException`.
- Members with a better route are marked `[Obsolete]`. Each message names the replacement, and they are removed in 12. They are warnings, never errors, but a build that treats warnings as errors stops on them until you move to the replacement or suppress `CS0618`. See [Deprecated in 11.0](#deprecated-in-110).
- The asynchronous command paths dispose their reader with `ConfigureAwait(false)` on `netstandard2.1` and `net10.0`.
- The `Map<T>` documentation now says how columns match by default: exactly, else ignoring case, else ignoring case and underscores (`author_id` feeds `AuthorId`).

## Changes since rc.2
Expand Down