Oracle (Bulk)
This page contains the latest information of the releases of RepoDb.Oracle.BulkOperations library.
View the NuGet package here or download it directly here.
RepoDb.Oracle.BulkOperations (v1.16.0)
Released: September 9, 2026
Version bump only, aligning with the RepoDB ecosystem-wide v1.16.0 release — no functional changes since v1.0.0.
- Referenced the
RepoDbpackagev1.16.0. - Referenced the
RepoDb.Oraclepackagev1.16.0.
RepoDb.Oracle.BulkOperations (v1.0.0)
Released: September 8, 2026
First general availability (non-preview) release of the Oracle Bulk Operations package, promoting the v0.0.1-beta6 preview below to stable. No functional changes since v0.0.1-beta6 — see that entry (and v0.0.1-beta1 further below) for the full changelog and known limitations.
RepoDb.Oracle.BulkOperations (v0.0.1-beta6) - Preview
Released: August 23, 2026
New
- Added OracleBulkArrayBinder, an async, array-bind based alternative to
OracleBulkCopy, and switched every async bulk write (BulkInsertAsync, and the staging-table load behindBulkMergeAsync/BulkUpdateAsync/BulkDeleteAsync/BulkDeleteByKeyAsync) over to it. This replaces the previousWriteToServerAsyncpath, which only wrapped the synchronousWriteToServercall rather than executing truly asynchronously. OracleBulkArrayBinder instead issues batchedINSERT INTO ... VALUES (:p0, :p1, ...)statements withOracleCommand.ArrayBindCountset, executed via the genuinely asyncOracleCommand.ExecuteNonQueryAsync(CancellationToken). - Referenced the
RepoDbpackagev1.16.0-beta2. - Referenced the
RepoDb.Oraclepackagev0.0.1-beta4.
RepoDb.Oracle.BulkOperations (v0.0.1-beta1) - Preview
Released: August 1, 2026
New
First release of the bulk operations extension for RepoDb.Oracle, built on ODP.NET’s OracleBulkCopy.
Verification status: this package has been implemented and reviewed, but not yet exercised against a live Oracle instance. Verify the
OracleBulkCopyload path, the array-bind identity read-back, and the staging-table strategy end-to-end before relying on this package in production.
What’s included
- BulkInsert, BulkMerge, BulkUpdate, and BulkDelete, each with an
Asyncoverload, callable against anOracleConnection, a table name, or aDataTable. - OracleBulkImportIdentityBehavior (
Unspecified,KeepIdentity,ReturnIdentity) — controls whether identity values are sent, ignored, or read back.ReturnIdentityswitchesBulkInsert’s row-load fromOracleBulkCopyto array binding withRETURNING ... INTO, sinceOracleBulkCopycannot report back generated values. - OracleBulkImportPseudoTableType (
Auto,Memory,Physical) — picks the staging-table strategy used byBulkMerge/BulkUpdate/BulkDelete: a Global Temporary Table, a shared heap table, or automatic selection by row count. - OracleBulkInsertMapItem — explicit source-to-destination column mapping for
BulkInsert, with an optional OracleDbType override. BulkMergecorrelates returned identities back by qualifier after theMERGEcompletes, since Oracle’sRETURNINGclause onMERGEitself requires Oracle Database 23ai+.
Known limitations (v1)
OracleBulkCopyis agnostic of the caller’s transaction — rows it writes commit independently, so a rolled-back transaction will not undo a plainBulkInsert’s already-copied rows. (BulkMerge/BulkUpdate/BulkDeleteare unaffected, since only their staging-table load bypasses the transaction; the finalMERGE/UPDATE/DELETEagainst the real table stays fully transactional.) RequestReturnIdentityto force the transactional array-bind path if this matters for your workload.Memory(Global Temporary Table) staging currently always resolves toPhysical, sinceOracleBulkCopy’s direct-path load cannot write into a GTT.Physicalstaging tables have no per-session isolation — concurrent callers bulk-writing to the same table will race each other’s staged data.-
The staging table for a given (table name, pseudo table type) combination is created once per process and reused; the first call against it commits any pending work in its transaction, since
CREATE TABLE/CREATE GLOBAL TEMPORARY TABLEis DDL. - Referenced the
RepoDbpackagev1.15.1. - Referenced the
RepoDb.Oraclepackagev0.0.1. - Referenced the
Oracle.ManagedDataAccess.Corepackagev23.9.1.