Firebird
This page contains the latest information of the releases of RepoDb.Firebird library.
View the NuGet package here or download it directly here.
RepoDb.Firebird (v1.17.0-alpha3)
Released: October 10, 2026
- Referenced the
RepoDbpackagev1.17.0-beta2.
RepoDb.Firebird (v1.17.0-alpha2)
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.
RepoDb.Firebird (v1.17.0-alpha1)
Released: October 1, 2026
- Enhancement: Added the property handlers FirebirdDecFloatToDecimalPropertyHandler, FirebirdDecFloatToNullableDecimalPropertyHandler and FirebirdDecFloatToStringPropertyHandler, which map the
DECFLOAT(16)andDECFLOAT(34)types into adecimal, adecimal?and astringproperty. #1342 - Enhancement: Added the property handlers FirebirdZonedDateTimeToDateTimeOffsetPropertyHandler, FirebirdZonedDateTimeToNullableDateTimeOffsetPropertyHandler, FirebirdZonedTimeToDateTimeOffsetPropertyHandler and FirebirdZonedTimeToNullableDateTimeOffsetPropertyHandler, which map the
TIMESTAMP WITH TIME ZONEandTIME WITH TIME ZONEtypes into aDateTimeOffsetand aDateTimeOffset?property. #1342 - Enhancement: Added the resolvers FirebirdDecFloatToDecimalResolver, FirebirdDecFloatToTextResolver, DecimalToFirebirdDecFloatResolver and TextToFirebirdDecFloatResolver, which convert the
DECFLOAT(16)andDECFLOAT(34)values between the driver (FbDecFloat) and adecimalor astring. They are used by theDECFLOATproperty handlers above. #1342 - Enhancement: Added the resolvers FirebirdZonedValueToDateTimeOffsetResolver, DateTimeOffsetToFirebirdZonedDateTimeResolver, DateTimeOffsetToFirebirdZonedTimeResolver and TimeSpanToFirebirdTimeZoneNameResolver, which convert the
TIMESTAMP WITH TIME ZONEandTIME WITH TIME ZONEvalues between the driver (FbZonedDateTimeandFbZonedTime) and aDateTimeOffset. They are used by the time zone property handlers above. #1342 - The property handlers of the
RepoDbcore package that target the Firebird types: BigIntegerToInt128PropertyHandler and BigIntegerToNullableInt128PropertyHandler (INT128). - Adopted the Roslyn and Meziantou static code analyzers across the codebase and applied the resulting fixes — including
ConfigureAwait(false)on async calls,ArgumentNullExceptionoverNullReferenceException, and other code-quality corrections. #1328 #1331 - Updated the NuGet package icon to the new logo and refreshed the
READMEwith a consistent header, description and a link to the get started tutorial. - Referenced the
RepoDbpackagev1.17.0-alpha3. - Unsealed
FirebirdDbSettingand added aUseFirebird(GlobalConfiguration, FirebirdDbSetting)overload that accepts any subclass, always applying the given setting even if already initialized — this lets FirebirdBulkOperationsDbSetting (shipped by RepoDb.Firebird.BulkOperations) be registered the same way. #1360 - Fixed Merge/MergeAll’s
EXECUTE BLOCKpath (used when the identity column is itself a qualifier) silently falling back to the identity field as the returned key column when KeyColumnReturnBehavior actually resolved to no key at all (e.g.,Primarybehavior on a table without a primary key) — it now correctly returns no value in that case instead of the identity value. #1364
RepoDb.Firebird (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.
RepoDb.Firebird (v1.0.0)
Released: September 8, 2026
First general availability (non-preview) release of the Firebird provider, promoting the preview below to stable v1.0.0. No functional changes since the preview — see that entry for the full feature set and known limitations.
RepoDb.Firebird (v0.0.1-alpha) - Preview
Released: 2026-08-29
New
First (alpha) release of the Firebird provider for RepoDB, built on top of FirebirdSql.Data.FirebirdClient. Targets Firebird 3.0 and later, and netstandard2.0, .NET 8, .NET 9, and .NET 10.
What’s included
- FirebirdBootstrap / FirebirdConfiguration
.UseFirebird()— initializes RepoDB for use withFbConnection(GlobalConfiguration.Setup().UseFirebird()), mapping the FirebirdDbSetting, FirebirdDbHelper, and FirebirdStatementBuilder to everyFbConnection. - FirebirdDbSetting — Firebird-specific behavior:
"for opening/closing identifier quotes,@parameter prefix, no table hints, no multi-statement command text support (IsMultiStatementExecutable = false), and a lowerMaxParameterCountof1500(Firebird’s DSQL parser rejects anIN (...)list past roughly 1500 members). - FirebirdStatementBuilder — generates Firebird-flavored SQL for every operation:
FIRST n/FIRST m SKIP npaging for Query/Exists/BatchQuery/skip-take queries, a nativeRETURNINGclause for identity/primary-key retrieval on Insert,UPDATE OR INSERT INTO ... MATCHING (...) RETURNING ...(Firebird’s native upsert) for Merge/MergeAll — falling back to anEXECUTE BLOCKPL/SQL construct when the identity column is itself a qualifier — and a plainDELETE FROM tfor Truncate, since Firebird has noTRUNCATE TABLEstatement. - FirebirdDbHelper — schema/type discovery (
GetFields/GetFieldsAsync) sourced fromRDB$RELATION_FIELDS/RDB$FIELDS, with identity-column detection viaRDB$IDENTITY_TYPE(Firebird 3.0+ only).GetScopeIdentity/GetScopeIdentityAsyncalways throwNotSupportedException, since Firebird has no session-wide “last identity” construct. - Resolvers — FirebirdConvertFieldResolver (casts a field to its Firebird type when a conversion is needed, e.g. typed ExecuteQuery results, and widens integer Average/AverageAll casts to
DOUBLE PRECISIONsince Firebird’sAVG()otherwise truncates), FirebirdDbTypeNameToClientTypeResolver (maps the canonical type-name strings produced by FirebirdDbHelper to .NET CLR types), DbTypeToFirebirdStringNameResolver (mapsSystem.Data.DbTypeto Firebird SQL type names, e.g.DbType.Guid→CHAR(16) CHARACTER SET OCTETS), and DbTypeNameToColumnNameResolver (maps a Firebird database type name to its base column type keyword, e.g.decimal→DECIMAL; used internally by RepoDb.Firebird.BulkOperations, which appends the field’s own precision/scale/size on top, to generate pseudo-table column definitions). - Parameter attributes mirroring
FbParametermembers, settable per entity property: Charset, FbDbType, SourceColumn, SourceColumnNullMapping, and SourceVersion.
Known limitations (v1)
- InsertAll, MergeAll and UpdateAll issue a separate round trip per row rather than a single batched statement, since
IsMultiStatementExecutableisfalse. Passing an explicitbatchSizegreater than1to any of them throws aNotSupportedException. Use theBulkInsert/BulkMerge/BulkUpdateoperations from RepoDb.Firebird.BulkOperations for genuine multi-row batching. - Firebird 2.5 and earlier are not supported. Identity-column introspection relies on
RDB$RELATION_FIELDS.RDB$IDENTITY_TYPE/RDB$GENERATOR_NAME, which do not exist prior to Firebird 3.0 — a table whose auto-increment behavior is implemented the pre-3.0 way (aBEFORE INSERTtrigger plus a bare generator/sequence) is not detected as an identity column. - No table hints of any kind —
AreTableHintsSupportedisfalse; passing a non-nullhintsargument to any operation throws aNotSupportedException. - No session-wide scope identity — GetScopeIdentity/
GetScopeIdentityAsyncalways throwNotSupportedException. Use the value already returned by Insert/Merge viaRETURNING, or query the underlying generator explicitly (e.g.GEN_ID(generator_name, 0)) if you need it out-of-band. - No
TRUNCATE TABLEstatement (as of Firebird 5.0) — Truncate compiles toDELETE FROM twithout aWHEREclause, which does not reset aGENERATED ... AS IDENTITYcolumn’s next value. MaxParameterCountdefaults to1500, since Firebird’s DSQL parser rejects anIN (...)list past roughly 1500 members with"Implementation limit exceeded".- Merge/MergeAll compile to a single plain
UPDATE OR INSERTstatement only when the identity column (if any) is not itself a qualifier; when it is, anEXECUTE BLOCKPL/SQL construct is used instead, sinceMATCHINGcannot reliably match a not-yet-inserted row against its own not-yet-known identity value. - No native GUID type — a
Guidentity property maps toCHAR(16) CHARACTER SET OCTETS; there is currently no dedicated property handler for it. -
Only a standard networked Firebird 3.0+ server (SuperServer) accessed via
FirebirdSql.Data.FirebirdClientis tested against — embedded (fbembed) and Classic/SuperClassic server modes are not specifically verified. - Referenced the
RepoDbpackagev1.16.0. - Referenced the
FirebirdSql.Data.FirebirdClientpackagev10.3.4.