Namespace eQuantic.Core.Data.Modeling
Classes
- ClusteringKeyAttribute
Declares an ordered-read member — "I read this sorted, within the key" — and each store materializes the declaration as well as it can: Cassandra as a real clustering key (rows physically ordered in the partition), relational stores and MongoDB as a multi-column index with the declared directions, Cosmos DB as a composite index on the container's policy (two or more members). The semantics of queries never change; only the plan does.
- ConcurrencyTokenAttribute
Declares the optimistic-concurrency token: the versioned column on relational stores (
WHERE … AND version = @old, bumped on every write), the_etagmember on Cosmos DB (conditionalIf-Matchreplace).
- CounterAttribute
Declares a Cassandra
countercolumn (the table mutates through increments, never inserts).
- EntityAttribute
The store-neutral modeling vocabulary: one set of eQuantic-owned annotations that every provider interprets — no driver attributes on entities (
[BsonElement], EF's[Column]…), no rewrite when an entity moves between stores. The names are deliberately distinct fromSystem.ComponentModel.DataAnnotationsso both can coexist without ambiguity.Precedence is explicit and deterministic: conventions < annotations < fluent — the annotations seed each provider's model builder, and fluent configuration overrides them. Each provider honours the subset that maps to its store (the model's
Explain()shows the outcome); annotations outside a store's vocabulary are ignored, never errors.
- EntityKeyAttribute
Declares the entity's key member (a member named
Idis the convention otherwise).
- FacetAttribute
Declares storage facets for a member — a maximum Length for text, a Precision/Scale for decimals. Relational DDL sizes the column with them (
varchar(n),numeric(p,s)); stores without sized types ignore them.
- PartitionKeyAttribute
Declares the member part of the partition key — the access-pattern declaration: Cassandra's partition key and Cosmos DB's partition key path (compose with Order — Cosmos builds a hierarchical, multi-hash key from up to three members). Relational stores and MongoDB have no partition concept and ignore it.
- SearchIndexAttribute
Declares a search-indexed text member:
StartsWith/EndsWith/ContainsandDb.Likepush down natively on it (Cassandra SASI; the migration creates the index).
- StoredAsAttribute
The member's stored name — a column (relational), a document field (MongoDB) — when the provider's naming convention does not fit.
- TimeToLiveAttribute
Declares the entity's default time-to-live (Cosmos DB container TTL).
- UnmappedAttribute
Excludes the member from the mapping (navigations are excluded automatically; this is for the rest).
Enums
- SearchMode
What a search index can match — and therefore which
LIKEshapes push down.