MongoDB
Types
The ARX types an application uses, grouped by what they are for. Each has its own page.
Services and connections
The service that talks to the database, and the connection, transaction and batch scope types that group calls.
ArxMongoDbServiceclassThe MongoDB service: Create, Update, Delete, Retrieve and RetrieveMultiple against one database, a collection per entity.ArxMongoConnectionclassA MongoDB connection for ARX transactions.ArxMongoTransactionclassA MongoDB transaction begun by BeginTransactionAsync.ArxTransactionclassA database transaction that ARX calls run in.IArxBatchDataServiceinterfaceA data service that can run write calls in batch scopes.IArxBatchScopeinterfaceOne transaction across many write calls.ArxBatchOptionsclassOptions for a batch scope.
Entities and values
A record, its id, and the values with a meaning of their own: a reference to another record, a selection set code, JSON, bytes, an attribute left out.
ArxEntityclassA record of one table: its name (EntityName), its attributes (column name to value) and, once written or read, its id (RecordId).ArxEntityCollectionclassThe rows a RetrieveMultiple returns (Entities), whether another page follows (HasNextPage), and the total (TotalRecordCount) when the query asked for it.ArxRecordIdclassThe id of one record: the value of its table's id column, of any declared id type.ArxEntityReferenceclassA lookup: a reference to a record of another table, by that table's name and the record's id.ArxSelectionSetValueclassA selection set (option set, picklist) value: the option's code, checked against the set named SetName in the developer's IArxSelectionSetCatalog and written in that set's storage form.ArxJsonBclassA JSON value: written to a jsonb or json column as its SerializedValue text, and what those columns read back as.ArxByteaclassBinary data for a binary column (Data): PostgreSQL bytea, SQL Server varbinary, MySQL BLOB or VARBINARY, a MongoDB binary, a DynamoDB B attribute.ArxIgnoreclassAn attribute value meaning "leave this column out": Create and Update don't write an attribute set to new ArxIgnore().
The schema catalog
What the developer declares once: each table's id column, its business keys, lookups, display names, and the selection sets.
ArxSchemaCatalogclassWhat the developer declares about the database: every table's id column and keys, and the selection sets.ArxSchemaCatalogBuilderclassBuilds an ArxSchemaCatalog.ArxIdColumnclassA table's id column, declared by the developer: the one column that identifies a record.ArxKeyclassA business key of a table: one or more columns whose values identify a record, such as account_number, or region and sku together.ArxTableDefinitionclassA table the developer declared: its id column and its keys.ArxDisplayNameclassHow a record is named to a person: one column, or several joined by a delimiter, NULL parts skipped.ArxSelectionSetDefinitionclassOne selection set: its kind, storage form and options.ArxSelectionSetOptionrecordOne option of a selection set.ArxSelectionSetKindenumWhat a selection set's codes are, matching the column that stores them.ArxSelectionSetMultiplicityenumHow many options a record holds, and in which storage form when it's more than one.
Preloading the schema
Reading the tables' ids, keys, lookups and column types from the database once, when the service is set up.
ArxMongoPreLoadstatic classLoads an ArxPreLoadTable from a MongoDB database.ArxPreLoadTableclassA preload into a schema catalog at service setup: the registered tables, and what to read of them.ArxPreLoadTableRegisterclassThe tables a preload reads: one PreLoadTable call per table, with the columns to load, or none for all of them.ArxPreLoadModeenumWhat a preload reads.ArxColumnDefinitionclassA column a preload found: its name, the .NET type ARX reads it as, the database's type and traits.ArxColumnTraitsenumWhat a column's database type is, beyond its .NET type.
Finding the rows
How Update, Delete and Retrieve find their rows: by id, by a declared key, or by any columns.
ArxMatchclassHow an update or delete finds its rows: Id (the default), Key or Columns.ArxUpdateOptionsclassOptions for Update and UpdateMultiple.ArxDeleteOptionsclassOptions for Delete and DeleteMultiple.ArxRetrieveOptionsclassOptions for Retrieve and RetrieveMultiple.
Queries
RetrieveMultiple's query: what it reads from, which columns, the filters, the joins, the order, paging and aggregates.
ArxQueryExpressionclassA query for RetrieveMultiple: what to read from (Source: a table, view or function), the columns, the criteria (nested AND/OR), joins (LinkEntities), order, paging, distinct and aggregates.ArxRowSourceclassWhat a query reads from: a table or view by name, or a function that returns rows, with its arguments.ArxColumnSetclassThe columns a read returns: new ArxColumnSet("name", "email"), or All for all of them.ArxFilterExpressionclassA group of conditions joined by And or Or (FilterOperator), with nested groups (Filters) for any mix of the two: a query's Criteria and a link entity's LinkCriteria.ArxConditionExpressionclassOne condition: an attribute, an operator (ArxConditionOperator) and its values.ArxConditionOperatorenumHow a condition compares its attribute with its values.ArxLogicalOperatorenumHow a filter joins its conditions and nested filters: all of them (And) or any of them (Or).ArxDateTimeConditionOptionclassA date and time condition value that says how to compare: the date only (the default) or the date and the time.ArxDateTimeConditionOptionTypeenumWhether a date and time condition compares the date only or the date and the time.ArxLinkEntityclassA join from a query's row source (or from another link) to another table: the column on each side, the join (JoinOperator), an alias, the columns it returns (read back as alias.column) and its own criteria.ArxJoinOperatorenumThe join a link entity makes: Inner, Left or Right.ArxOrderExpressionclassOne sort key of a query: an attribute, ascending or descending, of the main row source or of a joined entity (FromEntityAlias).ArxOrderTypeenumAscending or descending.ArxPagingInfoclassPaging for RetrieveMultiple: the page size (Count, 5,000 by default) and the 1-based page number.ArxAggregateInfoclassAggregates and group by for RetrieveMultiple: each aggregate column has an alias, an attribute and an operator (ArxAggregateOperator); the group-by columns are listed apart.ArxAggregateOperatorenumThe value an aggregate column computes: a count, the minimum, maximum, sum or average, a standard deviation or a variance.
Procedures and functions
Execute: a call to a stored procedure or function, its parameters and paging, and what comes back.
ArxProcedureExpressionclassA call to a routine the database owns: a stored procedure or a function, with its parameters, in the pattern of ArxQueryExpression.ArxProcedureTypeenumWhat a routine is: PostgreSQL calls them differently (CALL against SELECT), so the caller says which.ArxProcedureParameterclassOne parameter of a routine: by name or by position (Name null), with its value and, when needed, its type.ArxProcedureParameterDirectionenumHow a parameter of a routine is passed.ArxPagingParametersclassThe arguments of a routine that pages itself (way 1): ARX fills them from PageInfo, and reads the total from TotalRecordCount (an OUT parameter of a procedure, a result column of a function).ArxExecuteOptionsclassOptions for one Execute call.ArxExecuteResultclassWhat a routine returned: its OUT and INOUT values, its result sets (a procedure's tables, a function's rows) and the messages it sent.ArxResultSetCollectionclassThe result sets of a call, in order, also by name (a cursor parameter's name, or the cursor's).ArxDatabaseMessageclassA message a routine sent while it ran (PostgreSQL RAISE NOTICE, SQL Server PRINT, MySQL warnings), in the order sent.
Errors
What ARX throws: refused before the database, refused by it, or not supported; each with a stable code.
ArxExceptionclassBase type of every error ARX.SDK reports, apart from ArgumentNullException for null arguments.ArxValidationExceptionclassThe caller's input is invalid.ArxDatabaseExceptionclassThe database reported an error.ArxNotSupportedExceptionclassThe provider doesn't support the requested operation or feature.ArxErrorCodeenumStable ARX error codes, identical in every provider and language.ArxErrorCategoryenumThe category of an ArxErrorCode, given by its thousands digit.
MongoDB's own types
What only MongoDB has: its options and, where it has one, the model of its tables.
ArxMongoWriteOptionsclassOptions for MongoDB writes of several documents.
Other public types
The public types no group above lists: less common needs, extension points and interop.
ArxAggregateColumnclassOne aggregate of a query: an operator over an attribute, read back under an alias.ArxAttributeCollectionclassAn entity's attributes: names and their values.ArxBatchDataServiceExtensionsstatic classBatch-scope helpers shared by every provider.ArxBatchScopeclassThe behaviour every provider's batch scope shares: call numbering, failure handling, state, the one-call-at-a-time rule and rollback on dispose.ArxBatchStateenumThe state of a batch scope.ArxConnectionclassA connection to one database, opened and closed by ARX.ArxCreateMultipleOptionsclassOptions for CreateMultipleAsync(entities, options).ArxDiagnosticsstatic classARX's tracing and metrics, on .NET's own instruments, so OpenTelemetry (AddSource("ARX.SDK"), AddMeter("ARX.SDK")) or any ActivityListener and MeterListener read them: an activity per operation (Create, RetrieveMultiple, …), kind Client, named "operation table", tagged db.system.name, db.operation.name, db.collection.name and arx.provider; on failure the status Error, error.type and arx.error.code; arx.operation.duration (a histogram, in seconds) and arx.operation.errors (a counter), with the same tags.ArxFilterWritestatic classFor the providers' writes by a filter: the rules every provider applies the same way, before anything is sent.ArxFilterWriteOptionsclassOptions for an update or delete by a filter (UpdateMultipleAsync(values, filter), DeleteMultipleAsync(table, filter)).ArxFullTextSearchclassA full-text search, given as a condition's value: query.Criteria.AddCondition("body", ArxConditionOperator.Equal, new ArxFullTextSearch("quick fox")).ArxFunctionArgumentclassOne argument of a function row source: by name (p_region => $1) or by position (Name null).ArxInjectionCheckstatic classThe rule every provider uses to tell a name that looks like an SQL injection attempt (ARX1017 SuspectedInjection) from a plain invalid name (ARX1003 InvalidIdentifier).ArxMatchKindenumHow an update or delete finds its rows.ArxPagingCookieProtectionenumHow a provider protects its paging cookies.ArxPagingParametersStyleenumHow a routine that pages itself names its page arguments and its total (way 1).ArxPreLoadTypesstatic classThe type names a catalog's JSON uses.ArxResultColumnclassA result column of a function that returns untyped rows (SETOF record): its name and .NET type.ArxRowSourceKindenumWhat a row source is.ArxSelectionSetCatalogclassA ready-made, immutable, thread-safe catalog.ArxSelectionSetCatalogBuilderclassBuilds an ArxSelectionSetCatalog.ArxSelectionSetExtensionsstatic classReading selection sets.ArxSelectionSetsstatic classThe write-side checks every provider runs for an ArxSelectionSetValue, before any database access.ArxSelectionSetWriterecordWhat a provider writes for one ArxSelectionSetValue.ArxServerCheckclassWhat the connected server allows, from CheckServerAsync(): the server's version, the provider's capabilities on this server, and for each one the server removes, why.ArxServerLimitrecordA capability the provider has but the connected server doesn't allow, and why.ArxTransactionStateenumThe state of an ArxTransaction.IArxDataServiceinterfaceWhat every ARX service does, whatever its database: the operations, the capabilities, the startup checks, and batch scopes for work that must succeed or fail together.IArxSelectionSetCataloginterfaceThe selection sets an application uses, defined by the developer.