Table of Contents

Namespace eQuantic.Core.Data.Relational

Classes

RelationalClusteringColumn

An ordered-read column: the migration materializes a multi-column index with the declared directions.

RelationalColumn

A mapped column: the entity property, its stored name and (optionally) its value converter.

RelationalConverter

A member's value converter: how a domain type (a Value Object, an enum-as-string) maps to its stored scalar.

RelationalEntityBuilder<TEntity>

Fluent configuration for one entity's relational mapping.

RelationalEntityConfiguration

The relational mapping for an entity: its table, key column, columns (named through the dialect's convention unless overridden) and whether the key is database-generated. Declared up front — the engine renders SQL from it and never spells a name by hand.

RelationalEntityConfiguration<TEntity>

The typed relational mapping for TEntity.

RelationalModel

The registered relational mappings, keyed by entity type.

RelationalModelBuilder

Fluent builder for the RelationalModel — one Entity call per mapped type.

RelationalNavigation

A declared navigation: the member, the foreign-key member and which side holds it.

RelationalQueryOptionsExtensions

Relational query-option opt-ins.

RelationalResilienceOptions

The transient-fault retry policy for the relational engine — opt-in via services.AddRelationalResilience(...). Retries follow honest semantics:

  • Reads retry automatically: they are idempotent, and the broken pooled connection is reset before the next attempt.
  • Commits retry only behind RetryCommits: a commit that failed after the server applied it would re-run the whole batch. Concurrency tokens and client-generated keys make a double-apply fail loudly instead of silently — weigh that before opting in.
  • Inside an explicit transaction nothing retries — the transaction is broken; the caller must roll back and restart it.

Transience comes from the driver itself (IsTransient); attempts back off exponentially with jitter and are tagged on the current span (equantic.retries). The document and wide-column providers need none of this: their drivers ship native retry policies.

RelationalSearchColumn

A search-indexed text column: the migration materializes an index serving LIKE where the dialect can.

SqlDialect

A database's SQL flavour: identifier quoting, naming conventions, paging syntax, type names for DDL, and the rendering of the constructs that differ between engines (collection membership, tuple comparisons, generated-key retrieval). The shared relational engine renders everything else; a provider package is this class plus a driver.

SqlFunctionRegistry

The dialect's function translations, keyed by the marker method's name. The engine ships the standard set (ToLower/ToUpper/Trim, Db.Like, IsNullOrEmpty, Db.Year/Month/Day); map your own with Map(string, Func<string, IReadOnlyList<string>, string>) — write a static marker method with a real C# body (so an unmapped dialect can still run it client-side), call it in your lambdas, and register how this dialect renders it. The renderer hands you the quoted column and the bound parameter markers; you return the SQL fragment.