| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-09-09 | 35.5 kB | |
| RepoDB v1.16 -- The Universal Connectivity Release - Phase 1 source code.tar.gz | 2026-09-09 | 17.0 MB | |
| RepoDB v1.16 -- The Universal Connectivity Release - Phase 1 source code.zip | 2026-09-09 | 19.8 MB | |
| Totals: 3 Items | 36.9 MB | 0 | |
Core package: RepoDb v1.16.0
This is the biggest release in RepoDB's history since the last major release. It transforms RepoDB from a SQL Server/PostgreSQL/MySQL/SQLite hybrid-ORM into a genuine universal data connectivity platform, adding nine new database providers and native Bulk capabilities for MySQL and MySqlConnector β while also tightening up core conversion/validation behavior in ways that are intentionally breaking for a small number of call sites.
π Table of Contents
- Highlights
- New Database Provider Support
- ClickHouse
- DB2
- EnterpriseDB
- Firebird
- MariaDB
- MariaDB Connector
- Oracle
- SAP HANA
- Vertica
- New Bulk Capabilities for MySQL / MySqlConnector
- π₯ Breaking Changes
- β οΈ Known Limitations
- π’ Enterprise Readiness
π― Highlights
| Area | What's new |
|---|---|
| π Provider coverage | 9 brand-new DB providers: ClickHouse, DB2, EnterpriseDB, Firebird, MariaDB, MariaDB Connector, Oracle, SAP HANA, Vertica |
| π Bulk operations | Every one of the 9 new providers ships with a matching .BulkOperations package (BulkInsert/BulkMerge/BulkUpdate/BulkDelete/BulkDeleteByKey), plus brand-new Bulk support for MySQL and MySqlConnector |
| π₯ Core breaking changes | Reworked type-conversion/InvalidCastException behavior, a now-required where argument on several aggregate operations |
βοΈ New IDbSetting extensibility |
RequiresDbTypeBeforeValue, SkipsUnreferencedParameters, MaxParameterCount, MultiStatementSeparator, SqlTextParameterPrefix, IsTransactionSupported β groundwork that makes provider-specific quirks (Vertica, Firebird, Db2, ClickHouse, ...) first-class instead of hacked around |
| π Enterprise readiness | Documented Benchmarks, Security Policy, Packages & Build Status, Contributing & Copyright Attribution |
RepoDB is evolving from an ORM into a broader data productivity platform β see the roadmap article.
π New Database Provider Support
Every new provider below ships in two flavors β a core provider package (RepoDb.<Provider>) and a companion RepoDb.<Provider>.BulkOperations package β and follows the same shape: an IDbSetting, a StatementBuilder, a DbHelper, resolvers/property handlers for provider-specific type quirks, and parameter attributes mirroring the underlying driver's parameter object.
β οΈ Verification status β most of these are alpha/preview releases. Several packages are explicitly flagged in their own release notes as "implemented and reviewed, but not yet exercised against a live instance." Read each provider's Known Limitations before adopting it in production.
π§ ClickHouse
RepoDb.ClickHouse (Preview, released 2026-08-30) + RepoDb.ClickHouse.BulkOperations, built on ClickHouse.Driver (www.nuget.org) v1.3.0. Targets .NET 8/9/10.
ClickHouseConnection/ClickHouseCommand/ClickHouseTransactionRepoDB-aware wrappers;ClickHouseCommandstrips RepoDB's@parameter prefix since the driver expects unprefixed names.LIMIT/LIMIT ... OFFSETpaging,ALTER TABLE ... UPDATE/DELETEmutations for Update/Delete, plainINSERTfor Merge (dedup deferred to the table engine, e.g.ReplacingMergeTree).- Bulk package built on the driver's native
Copy.ClickHouseBulkCopy, withClickHouseBulkDbSetting.IsWaitForMutationsEnabledto opt into blocking until a mutation completes. - No identity/auto-increment mechanism at all β a hard architectural constraint, not a gap.
π΅ DB2
RepoDb.Db2 (v0.0.1-beta2, released 2026-08-23) + RepoDb.Db2.BulkOperations, built on IBM's Net.IBM.Data.Db2 v9.0.0.400/v10.0.0.200. Targets Db2 LUW 10.5+, .NET 8/9/10.
OFFSET ... FETCH NEXTpaging, hand-builtMERGE INTO ... USING (SELECT ... FROM SYSIBM.SYSDUMMY1)for Merge/MergeAll, genuine multi-rowVALUES (...), (...)for InsertAll, identity retrieval viaSELECT ... FROM FINAL TABLE (INSERT ...).- Bulk package adds
Db2BulkArrayBinder, an async array-bind alternative toDB2BulkCopyfor true async bulk loads. - Connection string requirement:
HostVarParameters=True;must be set, otherwise every parameterized call fails withSQL0313N.
π EnterpriseDB
RepoDb.EnterpriseDb (v0.0.1-alpha, Preview) + RepoDb.EnterpriseDb.BulkOperations, built on the Npgsql-backed RepoDb.Connector.EnterpriseDb (www.nuget.org) for EDB Postgres Advanced Server. Targets .NET 8 and .NET 10.
INSERT ... ON CONFLICT DO UPDATEfor Merge/MergeAll (withOVERRIDING SYSTEM VALUEfor explicit identity inserts),RESTART IDENTITYfor Truncate.- Bulk package built on
EDBBulkCopy(Npgsql's native binaryCOPYprotocol) β a genuine bulk load, not a row-by-row loop. - Targets EDB Postgres Advanced Server specifically β not a general-purpose PostgreSQL provider (use
RepoDb.PostgreSqlfor community Postgres).
π₯ Firebird
RepoDb.Firebird (v0.0.1-alpha, released 2026-08-29) + RepoDb.Firebird.BulkOperations, built on FirebirdSql.Data.FirebirdClient (www.nuget.org) v10.3.4. Targets Firebird 3.0+, netstandard2.0, .NET 8/9/10.
FIRST n/FIRST m SKIP npaging, nativeRETURNINGclause,UPDATE OR INSERT INTO ... MATCHING (...) RETURNING ...for Merge (falling back to anEXECUTE BLOCKwhen identity is itself a qualifier).- Bulk package built on
FbBatchCommand(the driver's native ADO.NET batching API) viaFirebirdCommandBatcher. - Requires Firebird 3.0+ β identity-column introspection depends on
RDB$IDENTITY_TYPE, unavailable on 2.5 and earlier.
π¦ MariaDB
RepoDb.MariaDb (v0.0.1-alpha1, Preview) + RepoDb.MariaDb.BulkOperations, built on the MySql.Data-based RepoDb.Connector.MariaDb (www.nuget.org). Targets .NET Standard 2.0, .NET 8/9/10.
INSERT ... ON DUPLICATE KEY UPDATEfor Merge/MergeAll, identity retrieval viaLAST_INSERT_ID().- Bulk package built on
MariaDbBulkLoader, serializing rows to a tab-delimited file loaded viaLOAD DATA LOCAL INFILE(MySql.Datahas no native streaming bulk-copy API). - β οΈ Install only one of
RepoDb.MariaDborRepoDb.MariaDbConnectorper project β both declare identically-named types (MariaDbConnection,MariaDbBootstrap, etc.), and referencing both causes a hardCS0433compile error.
π¦ MariaDB Connector
RepoDb.MariaDbConnector (v0.0.1-alpha1, Preview) + RepoDb.MariaDbConnector.BulkOperations β the MySqlConnector-based counterpart to RepoDb.MariaDb, built on RepoDb.Connector.MariaDbConnector (www.nuget.org).
- Shares its SQL-generation layer statement-for-statement with
RepoDb.MariaDb; differs only in the underlying transport β this package uses the connector's own nativeMariaDbBulkCopyinstead ofLOAD DATA LOCAL INFILEfile-staging. - Same identically-named-type conflict applies β don't reference both MariaDB packages in the same project.
πΊ Oracle
RepoDb.Oracle (v0.0.1-beta4, released 2026-08-23) + RepoDb.Oracle.BulkOperations, built on ODP.NET (Oracle.ManagedDataAccess.Core) (www.nuget.org) v23.9.1. Targets Oracle 12c+, .NET 8/9/10.
OFFSET/FETCHpaging, identity retrieval via an Oracle 12c+ implicit result set (DBMS_SQL.RETURN_RESULT) wrapped in an anonymous PL/SQL block.- Bulk package adds
OracleBulkArrayBinder, replacing the earlierWriteToServerAsync(which merely wrapped the sync call) with genuinely asyncExecuteNonQueryAsync-based array binding. - A
RETURNINGclause onMERGEneeds Oracle Database 23ai+ β unavailable on 12cβ21c.
π’ SAP HANA
RepoDb.SapHana (v0.0.1-alpha, Preview) + RepoDb.SapHana.BulkOperations, built on Sap.Data.Hana.Net.v6.0 v2.29.25. Targets .NET 8/9/10.
- ANSI
LIMIT/LIMIT ... OFFSETpaging, nativeUPSERT ... WITH PRIMARY KEYfor Merge/MergeAll. - SAP HANA has no bulk-load API and rejects multi-row
INSERT ... VALUES (...), (...)β every "bulk" write here is a client-buffered loop of single-row parameterizedINSERTs (batched, not truly bulk). SapHanaGuidToStringPropertyHandler(mapsGuidβNVARCHAR(36)) ships in the Bulk package, not core β install it even if you don't use the bulk operations.
π» Vertica
RepoDb.Vertica (v0.0.1-alpha, released 2026-08-31) + RepoDb.Vertica.BulkOperations, built on Vertica.Data (www.nuget.org) v24.3.0. Targets netstandard2.0, .NET 8/9/10.
LIMIT/LIMIT ... OFFSETpaging, genuine multi-rowVALUESfor InsertAll,UPDATE ...; INSERT ... WHERE NOT EXISTS (...)for Merge β never a nativeMERGE, since Vertica rejects that statement outright against any table with anIDENTITY/AUTO_INCREMENTcolumn.- Bulk package built on
VerticaCopyStream(nativeCOPY ... FROM STDINstreaming). - Vertica has no
TRUNCATE TABLEstatement βTruncatecompiles toDELETE FROM tand does not reset identity's next value.
π¦ New Bulk Capabilities for MySQL / MySqlConnector
Two brand-new packages bring native Bulk operations to MySQL for the first time:
π¬ RepoDb.MySql.BulkOperations (v0.0.1-alpha1, released 2026-08-08)
BulkInsert, BulkMerge, BulkUpdate, BulkDelete, BulkDeleteByKey (+ Async) against MySqlConnection (MySql.Data), a table name, or a DataTable.
MySql.Dataships no streaming bulk-copy API, so every row-load goes through an internalMySqlBulkCopyβ aLOAD DATA LOCAL INFILE-based stand-in, built onMySqlBulkLoader, serializing rows to a temp tab-delimited file.- Requires
AllowLoadLocalInfile=True;AllowUserVariables=True;on the connection string, plus the server'slocal_infileglobal variable enabled. - β οΈ
LOAD DATA LOCAL INFILEruns directly against the connection, never through the caller'sMySqlTransactionβ a rolled-back transaction will not undo an already-loadedBulkInsert.
π¬ RepoDb.MySqlConnector.BulkOperations (v0.0.1-alpha1, Preview)
BulkInsert, BulkMerge, BulkUpdate, BulkDelete, BulkDeleteByKey (+ Async) against MySqlConnectorConnection, a table name, or a DataTable, with MySqlConnectorBulkImportIdentityBehavior (Unspecified/KeepIdentity/ReturnIdentity).
- β οΈ Bulk-load step is agnostic of the caller's transaction β request
ReturnIdentityto force the transactional array-bind path if this matters.
Both packages reference RepoDb v1.16.0-alpha2 / RepoDb.MySql(Connector) v1.16.0-alpha1, and neither has been exercised against a live MySQL instance yet β verify the bulk-load path, identity read-back, and staging-table strategy before production use.
π₯ Breaking Changes
π₯ Core (RepoDb v1.16.0)
- Reworked automatic type-conversion logic in
Converter.ToType<T>(). Anull/DBNullscalar result now raises a clearInvalidCastExceptionnaming the offending value and target type β unlessGlobalConfiguration.Options.ConversionTypeisAutomatic, the target is a reference/by-ref type, or the target isSystem.Object.Exists/ExistsAsyncalways forces automatic conversion (returnsfalseon no match) regardless of the global setting. This affects every sync/async overload of:ExecuteScalar,Average,AverageAll,Count,CountAll,Exists,Max,MaxAll,Min,MinAll,Sum,SumAll. whereargument is now required (no more defaultnull) onAverage,BatchQuery,Count,Max,Min,SkipQuery, andSumβ acrossBaseRepository,DbRepository, andDbConnectionextensions. #1266- Deprecated
BaseDbSetting.AverageableType.
π₯ RepoDb.SqlServer.BulkOperations
isReturnIdentityis gone from BulkInsert and BulkMerge, replaced by anidentityBehaviorargument typed asSqlServerBulkImportIdentityBehavior. Callers passing aboolneed to switch toSqlServerBulkImportIdentityBehavior.ReturnIdentityor.Unspecified.usePhysicalPseudoTempTableis gone too, replaced by apseudoTableTypeargument typed asSqlServerBulkImportPseudoTableType, across BulkInsert, BulkMerge, BulkUpdate, and BulkDelete. Callers passing aboolneed to switch toSqlServerBulkImportPseudoTableType.Physicalor.Temporary.- The
primaryKeys-based overload ofBulkDeletehas been split out into its ownBulkDeleteByKeymethod. Existing calls toBulkDeletewith a list of primary keys need to move toBulkDeleteByKeyinstead. - On the non-breaking side, a new SqlServerBulkInsertMapItem class brings the same column-mapping API already used by PostgreSQL and Oracle to SQL Server β the base
BulkInsertMapItemclass still works if you're already using it.
π₯ RepoDb.MySql / RepoDb.MySqlConnector (v1.16.0)
- Removed the obsolete
MySqlBootstrap.Initialize()method. UseGlobalConfiguration.Setup().UseMySql()instead.
π₯ RepoDb.PostgreSql (v1.16.0-beta1)
- Removed the obsolete
PostgreSqlBootstrap.Initialize()method. UseGlobalConfiguration.Setup().UsePostgreSql()instead. RepoDb.PostgreSql.BulkOperationsrenamed its bulk-import enumerations and operation methods βNpgsqlBulkInsertMapItemβPostgreSqlBulkInsertMapItem,BulkImportIdentityBehaviorβPostgreSqlBulkImportIdentityBehavior,BulkImportMergeCommandTypeβPostgreSqlBulkImportMergeCommandType,BulkImportPseudoTableTypeβPostgreSqlBulkImportPseudoTableType, andBinaryImport/BinaryBulkInsert/BinaryBulkMerge/BinaryBulkDelete/BinaryBulkDeleteByKeyβBulkInsert/BulkMerge/BulkDelete/BulkDeleteByKey. Old names are deprecated, not removed β they remain usable as subclasses/aliases for backward compatibility.
π‘ Cross-cutting (non-breaking, but foundational for the providers above)
New IDbSetting extensibility points added in Core and consumed by the new providers:
RequiresDbTypeBeforeValueβDbTypeassigned beforeValue(Vertica needs this).SkipsUnreferencedParametersβ skip a bound parameter with no placeholder in the generated SQL (a strict provider otherwise rejects the whole command).MaxParameterCountβ caps parameters per generated command (batches largeIN (...)lists); defaults to2098, lowered to1500for Firebird and Vertica.MultiStatementSeparatorβ customizes the separator used byQueryMultiple/QueryMultipleAsync.SqlTextParameterPrefixβ parameter prefix used in raw/text SQL vs. boundDbParameters.IsTransactionSupportedβ whether the underlying driver supports transaction objects at all.
β οΈ Known Limitations
Full detail lives in limitations.md (github.com) β summarized here by area.
β οΈ Core
- Composite keys β not supported as a default qualifier; push operations (
Insert,Update,Delete,Merge) use the primary key only. Target composite columns explicitly via expression/dynamic-based calls. - Auto-generated primary column β RepoDB hydrates only the identity column back onto the model; a separately-generated primary/default column (e.g.
UUIDdefaults in MySQL) is not returned. - Computed columns β supported in fluent GET operations, not in fluent PUSH operations by default; use table-targeted methods or explicit
fieldsrestriction instead. - JOIN queries β not supported at all, by design; use
QueryMultiple/ExecuteQueryMultiple/SplitQueryand compose results yourself. - Cache invalidation β no automatic invalidation; cached items expire after 180 minutes by default, or must be removed manually.
- Advanced query-tree expressions β only shallow (first-level) expressions are supported; no 2nd-level-deep member access, unbound expressions, or field-to-field comparisons.
- Multiple identity columns (PostgreSQL allows this) β RepoDB's statement builder only supports one identity column per table; extras are silently excluded from push operations.
β οΈ SQL Server (Bulk)
SqlServerBulkImportPseudoTableType.Autonever resolves toPhysicalβ a strict-equality bug meansAutoalways behaves likeMemoryregardless of row count, even for million-row loads.- Identity correlation differs by input shape β the
IEnumerable<TEntity>/dictionary overloads correlate by an explicit order column and are safe; theDataTableoverloads ofBulkInsert/BulkMergerely onMERGE'sOUTPUTordering matching insertion order, which SQL Server's optimizer does not guarantee β can silently misassign identities on larger/parallel-plan batches. ReturnIdentityis silently ignored for anonymous types β the merge/insert still runs, but no identity is read back and no exception is raised.- Reflection-based access to
SqlBulkCopyinternals β including a private_rowsCopiedfield β is used as a row-count fallback; a future driver release renaming/removing it would silently degrade rather than fail loudly.
β οΈ Oracle
QueryMultiplecosts N round trips (ODP.NET rejects multi-statement command text).InsertAll/MergeAllexecute one row per round trip today β true batching is planned for later.- Identity retrieval relies on an unverified
DBMS_SQL.RETURN_RESULTPL/SQL-block pattern. RETURNINGonMERGErequires Oracle Database 23ai+.- No native GUID type β map as
byte[]or registerGuidToByteArrayPropertyHandler. OracleBulkCopyis not transaction-aware β a rollback will not undo an already-copied plainBulkInsert. RequestReturnIdentityto force the transactional array-bind path.- Bulk staging:
Memory(GTT) always resolves toPhysicalβ no session isolation for concurrent callers.
β οΈ DB2
QueryMultiplecosts N round trips;InsertAll/MergeAllare one-row-per-round-trip.- No native GUID type β map as
byte[]or registerDb2GuidToByteArrayPropertyHandler. DB2BulkCopyload step does not honor the caller's transaction; the surrounding DDL and final statement do.- Bulk staging:
Memoryalways resolves toPhysical, and a new staging table is created/dropped on every call (not reused) β concurrent callers against the same table can contend for the same table name. BulkMergewithReturnIdentityis a 3-round-trip, non-atomic sequence with no snapshot isolation between steps.
β οΈ MariaDB / MariaDB Connector
- Install only one of the two packages per project β identical type names across assemblies cause a hard
CS0433compile error. - No native GUID type and no bundled property handler for one β map as
string/byte[], or write your own. RepoDb.MariaDb.BulkOperations'sLOAD DATA LOCAL INFILEload step is not transaction-scoped.- Bulk staging:
Memoryalways resolves toPhysicalin both packages; every call re-creates/drops the staging table (implicit commit on every call, since DDL auto-commits). BulkMergewithReturnIdentityis a 5-statement, non-atomic sequence relying on a session-variable identity pre-assignment seeded from a liveMAX(identity)+1read (deliberately not the cacheableinformation_schemavalue).
β οΈ ClickHouse
- No real transactions β
Commit()/Rollback()are true no-ops; design for idempotent re-runs instead. - No identity/auto-increment mechanism at all β
[Identity]mappings throw; assign keys client-side. Mergeemits a plainINSERTβ correctness depends entirely on a deduplicating table engine (e.g.ReplacingMergeTree) and reading back withFINAL/argMax.Updateis an asynchronous mutation (ALTER TABLE ... UPDATE) β returns once queued, not once applied; pollsystem.mutationsif you need to know when it lands.Deleteuses lightweight delete, inconsistently withUpdate's mutation path β verify your server version/engine supports it.- Composite
ORDER BY/PRIMARY KEYβ RepoDB's default qualifier only picks the first key column; always passqualifiersexplicitly for composite-keyed tables. - Bulk: no
ReturnIdentityat all (hardNotSupportedException);Autostaging always resolves toPhysical; even explicitMemoryis not truly session-isolated (a plain named table, notCREATE TEMPORARY TABLE); reported row counts forBulkUpdate/BulkDelete/BulkMergeare staged counts, not confirmed-mutated counts.
β οΈ Firebird
- Requires Firebird 3.0+ β identity detection relies on
RDB$IDENTITY_TYPE, absent on 2.5 and earlier. QueryMultiplecosts N round trips;InsertAll/MergeAllare one-row-per-round-trip (batchSize > 1throws).IN (...)lists are hard-capped at 1500 members by the DSQL parser (MaxParameterCount = 1500); manual raw SQL must self-enforce this.Merge/MergeAllfall back to anEXECUTE BLOCKPL/SQL construct when the identity column is itself a qualifier.- No session-wide scope identity, and no
TRUNCATE TABLEstatement (Truncatecompiles to unconditionalDELETE). - No native GUID type; only standard networked (SuperServer) Firebird is tested β not embedded or Classic/SuperClassic.
β οΈ Vertica
Merge/MergeAllcompile a compoundUPDATE ...; INSERT ...statement submitted as one string β unverified against a live instance, and its own remarks noteVerticaCommandmay refuse a parameterized compound statement outright.MergeAll/UpdateAllare one-row-per-round-trip;InsertAllis the one exception (batchable).useInvariantCulture: trueonUseVertica()changesCultureInfo.CurrentCultureprocess-wide, not per-connection.- No table hints, no
TRUNCATE TABLE,MaxParameterCountcapped at 1500, no native GUID property handler. - Bulk: identity read-back relies on an unverified contiguous-assignment back-computation from a single
SELECT LAST_INSERT_ID().
β οΈ SAP HANA
- Every "bulk" write is really a client-buffered loop of single-row
INSERTs β SAP HANA has no native bulk-load API and rejects multi-rowVALUESlists. InsertAll/MergeAll/UpdateAllare one-row-per-round-trip (batchSize > 1throws); no table hints.- No native GUID type β the handler for it (
SapHanaGuidToStringPropertyHandler) ships in the Bulk package, not core. Mergerequires the primary key value already known on the entity β no generate-and-return-in-one-call path.- Bulk staging:
Auto/Memoryalways resolve toPhysical; pseudo-table names are deterministic, not per-call-unique β concurrent same-operation/same-table calls can interfere. - Per the library's own source comments, the
ReturnIdentitycorrelated-COUNTrank computation inBulkMergeis "the least-verified statement in the whole provider."
β οΈ EnterpriseDB
InsertAlldoes not appendRETURNING(EDB rejects it against sub-tableVALUES) β generated identities are only returned viaInsertor the Bulk package.- No table hints of any kind.
- No CLR representation for PostgreSQL geometric types,
pg_lsn,tid, or text-search types β these resolve toobject. - Targets EDB Postgres Advanced Server specifically, not community PostgreSQL.
- Bulk: pseudo-table names are deterministic, not per-call-unique; prefer
MemoryoverPhysicalfor concurrent bulk operations against the same table.
π’ Enterprise Readiness
If your organization is evaluating or adopting RepoDB for production use, keep the following in mind (from the project's Enterprise Notice):
π Benchmarks
Independent, reproducible BenchmarkDotNet-based benchmarks compare RepoDB against Dapper, Entity Framework Core, Linq2Db, and NHibernate across every supported provider (CRUD, Batch, and Bulk categories, at 10/100/1000 row scales). All benchmark projects live in src/Benchmarks and are fully open β clone and run them against your own infrastructure rather than trusting numbers produced on the project's own CI/Docker environment. Every one of the 9 new providers already has a dedicated benchmark project (RepoDb.Benchmarks.<Provider>).
π Security
RepoDB's Security Policy is explicit that this is a single-maintainer project, not a vendor with an SLA:
- Only the latest published release of each package receives security fixes β there is no backport policy.
- Report vulnerabilities privately via email (
[SECURITY]subject line) β no public issues, no bug bounty program. - Documented risk areas: raw-SQL execution (parameterize always), no credential storage/logging, reflection-based access to non-public provider-driver internals (see the SQL Server limitation above), no automated dependency-vulnerability scanning across third-party drivers, and continuous CI testing rather than a formal third-party security audit.
π¦ Packages & Build Status
The full package matrix β Core, all provider packages, all Bulk-operations add-ons, and Telemetry β with live NuGet version/downloads badges and per-package CI build status, is maintained in PACKAGES.md (github.com). It now lists 14 provider packages and 14 matching Bulk-operations packages, up from 5 of each before this release.
π€ Contributing & Copyright Attribution
CONTRIBUTING.md (github.com) covers how to get involved β code (via for grabs issues), bug reports, proposals, documentation, and community support. Notably:
- Every source file must carry a copyright header. New files use:
#region Copyright Attributions // Copyright (c) 2026 John Smith. // Licensed under the Apache License, Version 2.0. // See the LICENSE file in the project root for full license information. #endregion - Existing files being modified (not created) keep their existing attribution as-is β GitHub's own history already tracks subsequent contributions once a header is applied.
- Licensed under Apache-2.0, Β© 2018 Michael Camara Pendon β forever free and open source.
βοΈ Additional enterprise notes
- No formal versioning/breaking-change policy β only the latest release gets fixes; pin exact versions and review release notes before upgrading.
- No formal governance yet β single-maintainer bus-factor risk should be weighed in your adoption planning.
- Support follows a documented Support Policy, not an enterprise SLA.
Release Checklist β All NuGet Packages
Every project with a .github/workflows/release-*.yml (i.e. every project that actually produces a published NuGet package). "Next Version" is based on each package's latest version currently on nuget.org:
- v1.0.0 β packages that have never had a stable release (still sitting on a
0.0.1-alpha/-betaprerelease on nuget.org), e.g. RepoDb.Db2. - v1.16.0 β established packages already on the
1.xrelease train (currently at a1.16.0-betaNprerelease on nuget.org), moving to the next stable release alongside RepoDb core.
"Dependency Overrides" is the value to pass as the dependency-overrides workflow input (each release-*.yml's -p: MSBuild property list) so its local ProjectReferences get stamped with the version they're actually being released at this run, rather than inheriting this package's own -p:Version. Only needed when a dependency isn't being released at the same version in the same run β since it always is here, every row below fills it in.
| Project Name | NuGet Name | Next Version | Dependency Overrides |
|---|---|---|---|
| RepoDb | RepoDb | 1.16.0 | β |
| RepoDb.ClickHouse | RepoDb.ClickHouse | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.ClickHouse.BulkOperations | RepoDb.ClickHouse.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbClickHouseVersion=1.0.0 |
| RepoDb.Db2 | RepoDb.Db2 | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.Db2.BulkOperations | RepoDb.Db2.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbDb2Version=1.0.0 |
| RepoDb.EnterpriseDb | RepoDb.EnterpriseDb | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.EnterpriseDb.BulkOperations | RepoDb.EnterpriseDb.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbEnterpriseDbVersion=1.0.0 |
| RepoDb.Firebird | RepoDb.Firebird | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.Firebird.BulkOperations | RepoDb.Firebird.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbFirebirdVersion=1.0.0 |
| RepoDb.MariaDb | RepoDb.MariaDb | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.MariaDb.BulkOperations | RepoDb.MariaDb.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbMariaDbVersion=1.0.0 |
| RepoDb.MariaDbConnector | RepoDb.MariaDbConnector | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.MariaDbConnector.BulkOperations | RepoDb.MariaDbConnector.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbMariaDbConnectorVersion=1.0.0 |
| RepoDb.MySql | RepoDb.MySql | 1.16.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.MySql.BulkOperations | RepoDb.MySql.BulkOperations | 1.16.0 | RepoDbCoreVersion=1.16.0;RepoDbMySqlVersion=1.16.0 |
| RepoDb.MySqlConnector | RepoDb.MySqlConnector | 1.16.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.MySqlConnector.BulkOperations | RepoDb.MySqlConnector.BulkOperations | 1.16.0 | RepoDbCoreVersion=1.16.0;RepoDbMySqlConnectorVersion=1.16.0 |
| RepoDb.Oracle | RepoDb.Oracle | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.Oracle.BulkOperations | RepoDb.Oracle.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbOracleVersion=1.0.0 |
| RepoDb.PostgreSql | RepoDb.PostgreSql | 1.16.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.PostgreSql.BulkOperations | RepoDb.PostgreSql.BulkOperations | 1.16.0 | RepoDbCoreVersion=1.16.0;RepoDbPostgreSqlVersion=1.16.0 |
| RepoDb.SapHana | RepoDb.SapHana | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.SapHana.BulkOperations | RepoDb.SapHana.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbSapHanaVersion=1.0.0 |
| RepoDb.Sqlite.Microsoft | RepoDb.Sqlite.Microsoft | 1.16.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.SqlServer | RepoDb.SqlServer | 1.16.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.SqlServer.BulkOperations | RepoDb.SqlServer.BulkOperations | 1.16.0 | RepoDbCoreVersion=1.16.0;RepoDbSqlServerVersion=1.16.0 |
| RepoDb.Telemetry.Core | RepoDb.Telemetry.Core | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.Telemetry.Default | RepoDb.Telemetry.Default | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbTelemetryCoreVersion=1.16.0 |
| RepoDb.Vertica | RepoDb.Vertica | 1.0.0 | RepoDbCoreVersion=1.16.0 |
| RepoDb.Vertica.BulkOperations | RepoDb.Vertica.BulkOperations | 1.0.0 | RepoDbCoreVersion=1.16.0;RepoDbVerticaVersion=1.0.0 |
Compiled from the releases documentation, limitations.md (github.com), and the RepoDB root README.md (github.com), PACKAGES.md (github.com), SECURITY.md (github.com), and CONTRIBUTING.md (github.com).