AuroraDB MySqlConnector (Bulk)
This page contains the latest information of the releases of RepoDb.AuroraDb.MySqlConnector.BulkOperations library.
View the NuGet package here or download it directly here.
RepoDb.AuroraDb.MySqlConnector.BulkOperations (v0.0.1-alpha3) - Preview
Released: October 9, 2026
- Enhancement: Made the package NativeAOT and trimming compatible (
IsAotCompatible), replacing the reflection-based anddynamiccode paths with AOT-safe equivalents. - Referenced the
RepoDbpackagev1.17.0-beta1. - Referenced the
RepoDb.AuroraDb.MySqlConnectorpackagev0.0.1-alpha3.
RepoDb.AuroraDb.MySqlConnector.BulkOperations (v0.0.1-alpha2) - Preview
Released: TBA
New
- Introduced AuroraDbBulkColumnMappingsBehavior (
Automatic,Strict,StrictBypass) and the AuroraDbBulkOperationsDbSetting setting class — opt into fail-fast validation of the source-to-destination column mapping for BulkInsert, BulkMerge, BulkUpdate and BulkDelete when no explicitmappingsare passed. #1360 - Referenced the
RepoDbpackagev1.17.0-alpha3. - Referenced the
RepoDb.AuroraDb.MySqlConnectorpackagev0.0.1-alpha2.
RepoDb.AuroraDb.MySqlConnector.BulkOperations (v0.0.1-alpha1) - Preview
Released: September 29, 2026
New
First (alpha) release of the bulk operations extension for RepoDb.AuroraDb.MySqlConnector, built on AuroraDbBulkCopy, a LOAD DATA LOCAL INFILE-based bulk writer from RepoDb.Connector.AuroraDb.MySqlConnector. MySQL has neither a native MERGE statement nor a session-scoped identity sequence object, so the SQL-generation approach here (UPDATE ... INNER JOIN plus an anti-joined INSERT ... SELECT for merges; identity values pre-assigned via a session variable rather than read back afterward) differs meaningfully from a Postgres-wire provider like RepoDb.AuroraDb.PostgreSql.BulkOperations. #1356
What’s included
- BulkInsert, BulkMerge, BulkUpdate, BulkDelete, and BulkDeleteByKey, each with an
Asyncoverload — callable against anAuroraDbConnection, aBaseRepository<TEntity, AuroraDbConnection>, or aDbRepository<AuroraDbConnection>, with an entity list, aDataTable, or anIDataReader(BulkDeleteByKeytakes a list of primary key values instead). - AuroraDbBulkImportIdentityBehavior (
KeepIdentitydefault,ReturnIdentity) — controls whether identity values are sent as-is or pre-assigned and read back via a staging table. - AuroraDbBulkImportPseudoTableType (
Auto,Memory,Physical) — accepted for every staged operation, though currently every call resolves toPhysicalregardless of the value passed. - AuroraDbBulkInsertMapItem — explicit source-to-destination column mapping for
BulkInsert/BulkMerge/BulkUpdate, with an optionalAuroraDbTypeoverride per mapping. - AuroraDbTraceKeys — the
traceKeyconstants for use with a custom ITrace. ReturnIdentityseeds its pre-assignment from a liveSELECT MAX(identityColumn) + 1 FROM <table>rather thaninformation_schema.TABLES.AUTO_INCREMENT, which MySQL 8 caches for up toinformation_schema_stats_expiryseconds (24 hours by default) and can return a stale, already-used counter.- Targets .NET 8, .NET 9 and .NET 10.
Known limitations (v1)
RepoDb.Connector.AuroraDb.MySqlConnectoris a prerelease package (v0.0.1-alpha1); its public API (AuroraDbConnection,AuroraDbBulkCopy, etc.) may still change before it reaches a stable release.identityBehavior: ReturnIdentityon BulkInsert or BulkMerge requiresAllowUserVariables=Trueon the connection string —AuroraDbConnectiondefaults this tofalse. PlainBulkInsert(withoutReturnIdentity),BulkUpdate,BulkDeleteandBulkDeleteByKeydon’t need it.- AuroraDbBulkImportPseudoTableType has no effect yet — every staged bulk call uses a
Physical(persistent, not session-private) pseudo table regardless of the value passed. TheMemory(TEMPORARYtable) code path is implemented but not currently reachable. - The
ReturnIdentityseed lookup (SELECT MAX(identityColumn) + 1) and the pre-assignmentUPDATEthat follows it are two separate round trips, leaving a small race window against a concurrent writer to the same table — there is no table-level locking (LOCK TABLESwould silently commit any transaction already open on the connection). - BulkMerge’s unmatched-row
INSERTuses aLEFT JOIN ... WHERE ... IS NULLanti-join on the first qualifier column, which assumes that column is never legitimatelynullon a real, matched row. - There is no
RepoDb.AuroraDb.PostgreSql-styleType Coercionconcern here —LOAD DATA LOCAL INFILEis text-based, not a fixed-width binary protocol, so no destination-type coercion step is needed before the write.
Bumps
- Referenced the
RepoDb.AuroraDb.MySqlConnectorpackagev0.0.1-alpha1. - References the
RepoDb.Connector.AuroraDb.MySqlConnectorpackagev0.0.1-alpha1.