Show / Hide Table of Contents

Namespace NFX.DataAccess.CRUD

Classes

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

PassthroughCursor

Represents a cursor that basically does nothing else but passes through control to source IEnumerable(Row)

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

Structs

CacheParams

Implements ICacheParams - supplied caching parameters

RowChange

Describes row modification

UpdateResult

Interfaces

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

Enums

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

Delegates

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)

Back to top Copyright © 2006-2018 Agnicore Inc
Generated by DocFX