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
Entitycall 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
LIKEwhere 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.