[This is preliminary documentation and is subject to change.]
Facilitates working with SQL and NoSQL backends on the level of records, rowsets, tables and queries
Classes
Class | Description | |
---|---|---|
![]() | AmorphousDynamicRow |
Represents a row of data which has a schema only known at run-time that also implements IAmorphousData
interface that allows this row to store "extra" data that does not comply with the current schema.
Dynamic rows store data in object[] internally, providing better flexibility(ability to define schema at runtime) than TypedRows at the expense of performance.
This class is not sealed so implementors may override configuration persistence
|
![]() | AmorphousTypedRow |
Represents a type-safe row of data when schema is known at compile-time that also implements IAmorphousData
interface that allows this row to store "extra" data that does not comply with the current schema.
Typed rows store data in instance fields, providing better performance and schema definition compile-time checking than DynamicRows
at the expense of inability to define schema at runtime
|
![]() | CRUDException |
Thrown by CRUD data access classes
|
![]() | CRUDFieldValidationException |
Thrown by CRUD data access classes when field validation does not pass
|
![]() | CRUDOperationCallContext |
Establishes a thead-static context which surrounds CRUD operations. You can derive your own classes, the .ctor must be chained.
The context can be nested. A call to .ctor must be balanced with .Dispose().
This is needed to pass some out-of-band information in some special cases to CRUD operations without changing
the caller interface, i.e. to swap database connection string.
This class IS NOT THREAD SAFE, so in cases of async operations, the context captures extra parameters ONLY for initial ASYNC INVOCATION, that is-
a true ASYNC implementation must pass the reference along the task execution line (in which case the object may be already Disposed but usable for property access
|
![]() | CRUDQueryHandler |
Represents an entity that can execute a query. The implementation may be called by multiple threads and must be safe
|
![]() | CRUDQueryHandler TStore |
Represents an entity that can execute a query. The implementation may be called by multiple threads and must be safe
|
![]() | CRUDRowValidationException |
Thrown by CRUD data access classes when field validation does not pass
|
![]() | CRUDTransaction |
Represents an abstract base for CRUDTransactions that perform particular backend CRUD work in overriden classes
|
![]() | CRUDValidationException |
Thrown by CRUD data access classes when validation does not pass
|
![]() | Cursor |
Represents a buffer-less unidicrectional reader that binds IEnumerable(Row) and the backend resource
(such as SQLReader or other object which is internal to the backend).
The cursor is NOT thread-safe and must be disposed properly by closing all resources associated with it.
Only one iteration (one call to GetEnumerator) is possible
|
![]() | Cursor enumerator | |
![]() | DynamicRow |
Represents a row of data which has a schema only known at run-time.
Dynamic rows store data in object[] internally, providing better flexibility(ability to define schema at runtime) than TypedRows at the expense of performance.
This class is not sealed so implementors may override configuration persistence
|
![]() | FieldAttribute |
Provides information about table schema that this typed row is a part of
|
![]() | FormModel |
Represents a "model" (in MVC terms) of a data-entry form.
Form models are statically typed - contain fields and can contain "extra amorphous" data
|
![]() | JSONMappings |
Facilitates mapping of CRUD/CLR types/values to JSON and back to CLR/CRUD
|
![]() | NotImplementedCRUDDataStore | |
![]() | Query |
Defines a query sent into ICRUDDataStore implementor to retrieve data.
A Query is a named bag of paremeters where every parameter has a name and the value.
|
![]() | Query Param |
Represents a CRUD query parameter
|
![]() | Query TResultRow |
Generic version of Query
|
![]() | QueryResolver |
Infrastructure class - not for app developers.
Resolves Query objects into query handlers. Query names are case-insensitive.
This class is thread-safe
|
![]() | QuerySource |
Represents query source code with pre-processed pragmas
|
![]() | QuerySource ColumnDef |
Provides column definition in QuerySource
|
![]() | Row |
Base class for any CRUD row. This class has two direct subtypes - DynamicRow and TypedRow.
Rows are NOT THREAD SAFE by definition
|
![]() | RowEqualityComparer |
Checks for reference equality. Use RowEqualityComparer.Instance
|
![]() | Rowset |
Implements a rowset that supports row change logging and CRUD operations.
Rowsets are not optimal for data replication as they perform linear search which is slow, however
Rowset class supports sorting. In contrast, Tables are kind of rowsets that keep data pre-sorted by key
thus facilitating quick searching
|
![]() | RowsetBase |
Provides base for rowset implementation.
Rowsets are mutable lists of rows where all rows must have the same schema, however a rowset may contain a mix of
dynamic and typed rows as long as they have the same schema.
Rowsets are not thread-safe
|
![]() | Schema |
Describes a schema for rows: TypedRows and DynamicRows.
DynamicRows are "shaped" in memory from schema, whereas, TypedRows define schema.
Schema for Typedrows is cached in static dictionary for speed
|
![]() | Schema FieldDef |
Provides a definition for a single field of a row
|
![]() | Table |
Implements a master table. Tables are rowsets that are pre-sorted by keys.
They are used in scenarios when in-memory data replication is needed.
A table supports efficient FindKey() operation but does not support sorting.
This class is not thread-safe.
|
![]() | TableAttribute |
Provides information about table schema that this row is a part of
|
![]() | TargetedAttribute |
Provides a base for attributes which ar targeted for particular techlology (i.e. "ORACLE")
|
![]() | TypedRow |
Represents a type-safe row of data when schema is known at compile-time.
Typed rows store data in instance fields, providing better performance and schema definition compile-time checking than DynamicRows
at the expense of inability to define schema at runtime
|
![]() | UniqueSequenceAttribute |
Provides information for unique sequence gen: scope and name
|
Structures
Structure | Description | |
---|---|---|
![]() | CacheParams |
Implements ICacheParams - supplied caching parameters
|
![]() | iListReadOnly | |
![]() | RowChange |
Describes row modification
|
Interfaces
Interface | Description | |
---|---|---|
![]() | IAmorphousData |
Denotes an entity, which is typically a row-derivative, that has extra data fields that are not
defined by particular schema and get represented as {name:value} map instead (schema-less data).
This interface is usually implemented by rows that support version changing between releases, i.e. when
structured storage (such as Mongo DB) stores more fields than are currently declared in the row the extra fields will be placed
in the AmorphousData collection. This interface also provides hook BeforeSave()/AfterLoad() that allow for transforms between
Amorphous and "hard-schema" data models
|
![]() | ICacheParams |
Supplies caching params
|
![]() | ICRUDDataStore |
Represents a DataStore that supports CRUD operations
|
![]() | ICRUDDataStoreImplementation | |
![]() | ICRUDOperations |
Describes an entity that performs single (not in transaction/batch)CRUD operations
|
![]() | ICRUDQueryExecutionContext |
Represents a context (such as Sql Server connection + transaction scope, or Hadoop connect string etc.) for query execution.
This is a marker interface implemented by particular providers
|
![]() | ICRUDQueryResolver |
Represents a class that resolves Query into suitable handler that can execute it
|
![]() | ICRUDTransactionOperations |
Describes an entity that performs single (not in transaction/batch)CRUD operations
|
![]() | IValidatable |
Denotes an entity that supports validation
|
Delegates
Delegate | Description | |
---|---|---|
![]() | FieldFilterFunc |
Provides filter predicate for CRUD operations. Return true to include the specified field
|
![]() | SetFieldFunc |
Injects function that tries to set field value. May elect to skip the set and return false to indicate failure(instead of throwing exception)
|
Enumerations
Enumeration | Description | |
---|---|---|
![]() | CRUDDataStoreType |
Denotes types of CRUD stores
|
![]() | DataKind |
Provides hint/classification for field textual data
|
![]() | FormMode |
Denotes form modes: unspecified | insert | edit
|
![]() | RowChangeType |
Describes what kind of modification was done
|
![]() | TransactionDisposeBehavior |
Specifies how transaction scope behaves on scope exit
|
![]() | TransactionStatus |
Denotes transaction statuses
|