RepoDB v1.17.0 — DuckDB, CockroachDB, AuroraDB, a New SQLite Family, and NativeAOT
We are excited to announce RepoDB v1.17.0. Just six weeks after v1.16.0, this release adds five new database providers, makes RepoDB NativeAOT- and trim-compatible, and brings stricter, safer Bulk Operations.
🌐 New database providers
RepoDb.Sqlite.Microsoft, RepoDb.Sqlite.Turso and RepoDb.Sqlite.Ahtola now share one structure as RepoDB’s SQLite family.
✨ What’s new
ExecuteQueryFirst and ExecuteQuerySingle. Both are available, with async versions, on the connection and on the repositories. First returns the first row. Single also fails if more than one row comes back. Both throw an EmptyException when no row is found.
using var connection = new SqlConnection(connectionString);
var person = connection.ExecuteQueryFirst<Person>("SELECT * FROM [Person] WHERE [Age] >= @Age ORDER BY [Id];",
new { Age = 18 });
NativeAOT and trimming. The Core, every provider and every Bulk package are now NativeAOT- and trim-compatible on .NET 8 and later. This was contributed by Marc-André Moreau.
Strict Bulk column mappings. The new BulkColumnMappingsBehavior setting (Automatic, Strict or StrictBypass) is available in every Bulk package. With a strict setting, unmapped or invalid columns fail fast instead of quietly loading into the wrong columns.
More additions:
ReplaceQueryFieldlets a query use SQL’sREPLACEfunction on a field. It was contributed by Paolo Bassi.- Property handlers are now available for every provider.
identityBehavioris now available on the DB2, MySQL, MySqlConnector and Oracle Bulk packages.IDbSettinggainedProvider,IsSchemaSupportedandAreIndexNamesUniquePerSchema.
🐞 Notable fixes
- SQL Server temporary tables (
#and##) are now detected correctly (#1196). BulkUpdateAsyncno longer fails intermittently when the key is an identity (#1351).- MySQL
Updatenow works with composite keys. Schema.Tablenames are now quoted correctly.
⚠️ Upgrade notes
- Custom
IDbSettingimplementations must implementProvider. Deriving fromBaseDbSettinggives you this automatically. - Null arguments now throw
ArgumentNullExceptioninstead ofNullReferenceException. Update any code that catches the old exception. - Strict Bulk mappings can surface mapping mistakes that were previously ignored. Review
BulkColumnMappingsBehavioron your Bulk calls. - The EnterpriseDB, MariaDB, MariaDbConnector and CockroachDB property handlers were renamed to carry their provider prefix. Update any references to the old names.
- The SQLite packages were restructured. Check your package names if you use Turso, Ahtola or the Microsoft SQLite provider.
See the full release notes for every change.
🙏 Thank you
Thank you to everyone who contributed to this release: Marc-André Moreau (@mamoreau-devolutions), Paolo Bassi (@bpaolo71), Nabil Gardon (@ngardon) and @Benziza. Thanks also to @daaleonardo and @cajuncoding for their bug reports, and to everyone who filed issues and joined the discussions.
~ Conceptualized by me. Reviewed and checked by AI. Refined and gatekept by me. ~
Please support us
Give a ⭐ to our GitHub repository |
Follow me on X / Twitter |
Connect with us on our official Teams Channel
Apache License 2.0 — Copyright © 2026 by Michael Camara Pendon / Create a Request