AuroraDB (PostgreSQL)
This page contains the latest information of the releases of RepoDb.AuroraDb.PostgreSql library.
View the NuGet package here or download it directly here.
RepoDb.AuroraDb.PostgreSql (v0.0.1-alpha1) - Preview
Released: September 27, 2026
New
First (alpha) release of the dedicated Amazon Aurora PostgreSQL provider for RepoDB, built on top of RepoDb.Connector.AuroraDb.Npgsql — an ADO.NET connector whose AuroraDbConnection wraps Npgsql inside the AWS Advanced .NET Data Provider Wrapper, and exposes AuroraDb-prefixed objects (AuroraDbConnection, AuroraDbParameter, AuroraDbType, etc.). Aurora PostgreSQL is PostgreSQL-compatible, so the package generates the same SQL as RepoDb.PostgreSql.
What’s included
AuroraDbBootstrap/AuroraDbGlobalConfiguration.UseAuroraDb()— initializes RepoDB for use withAuroraDbConnection(GlobalConfiguration.Setup().UseAuroraDb()), mapping theAuroraDbDbSetting,AuroraDbDbHelper, andAuroraDbStatementBuilder.AuroraDbDbSetting— Aurora PostgreSQL-specific behavior:"-quoted identifiers,@parameter prefix,publicdefault schema, no table hints, no nativeUPSERTkeyword (Merge is built viaINSERT ... ON CONFLICT DO UPDATEinstead), and multi-statement command text support (IsMultiStatementExecutable = true,MultiStatementSeparator = ";").AuroraDbStatementBuilder— generates Aurora PostgreSQL-flavored SQL for every operation:LIMIT/LIMIT ... OFFSETpaging,RETURNING-clause identity retrieval for Insert/InsertAll,INSERT ... ON CONFLICT DO UPDATE ... RETURNINGfor Merge/MergeAll (withOVERRIDING SYSTEM VALUEso an explicit identity value on the entity is respected instead of silently ignored), andTRUNCATE TABLE ... RESTART IDENTITYfor Truncate.AuroraDbDbHelper— schema/type discovery sourced frominformation_schema.columns(joined againstpg_index/pg_namespacefor primary-key and temp-schema detection),SELECT lastval();for identity retrieval, a one-time retry against a fresh connection onNpgsqlOperationInProgressException, and per-parameterDateOnly/TimeOnly/non-UTCDateTimecoercion (including inside arrays).- Resolvers — AuroraDbConvertFieldResolver, AuroraDbDbTypeNameToAuroraDbTypeResolver, AuroraDbDbTypeNameToClientTypeResolver, ClientTypeToAuroraDbTypeResolver, and DbTypeToAuroraDbStringNameResolver.
- Property handlers — AuroraDbTsQueryToStringPropertyHandler and AuroraDbTsVectorToStringPropertyHandler, mapping the full-text search
tsquery/tsvectortypes ontostringproperties (manual binding only). - Parameter attributes mirroring
AuroraDbParameter, settable per entity property: AuroraDbType, DbType, Direction, IsNullable, ParameterName, Precision, Scale, Size, SourceColumn, SourceColumnNullMapping, SourceVersion, and Value. - Targets .NET 8, .NET 9 and .NET 10.
Known limitations (v1)
RepoDb.Connector.AuroraDb.Npgsqlis a prerelease package (v0.0.1-alpha1); its public API (AuroraDbConnection,AuroraDbType, etc.) may still change before it reaches a stable release.- Because
AuroraDbConnectionwraps Npgsql inside the AWS Advanced .NET Data Provider Wrapper, opening a connection runs Aurora-detection queries (such asSELECT 1 FROM pg_catalog.aurora_replica_status() LIMIT 1) against the server. On a non-Aurora PostgreSQL server, that probe fails on every connection open and is logged as a server error — this is not something RepoDB can suppress. - On a server that is not an Aurora cluster, a connection enlisted in a
System.Transactions.TransactionScopefails on its first operation, because the failed Aurora-detection probe runs inside — and aborts — the ambient transaction. Use an explicitconnection.BeginTransaction()instead ofTransactionScopeunless the target is a genuine Aurora cluster. - The spatial (
geometry,geography) types have no CLR representation without an Npgsql plugin such asNpgsql.NetTopologySuite(not referenced by this package); reading ageometry/geographycolumn into a typed property throwsInvalidCastException. Well-Known Text can still be exchanged manually via ExecuteQuery/ExecuteScalar with theST_GeomFromText/ST_GeogFromText/ST_AsTextPostGIS functions. - A PostgreSQL enum column needs its mapping registered through
NpgsqlConnection.GlobalTypeMapper.MapEnum<T>()before the first connection for that connection string is opened —AuroraDbConnectionbuilds itsNpgsqlConnectioninternally, so anNpgsqlDataSourceBuilder-based mapping cannot be applied to it directly. - InsertAll’s generated key retrieval assumes the
RETURNINGclause of a multi-rowINSERTreturns rows in the same order they were listed — this has not been independently verified against an Aurora cluster.
Bumps
- Referenced the
RepoDbpackagev1.17.0-alpha3. - References the
RepoDb.Connector.AuroraDb.Npgsqlpackagev0.0.1-alpha1. - References the
Npgsqlpackagev10.0.3directly (pinned above the connector’s ownv9.0.5dependency, soDATE/TIMEcolumns read asDateOnly/TimeOnly).