API Reference
Browse the REDB API documentation. Select a namespace or type from the tree on the left, or click on items below.
Search results for: Object
Clear search
appExt
redb.Core.Utils
Filter<T>(IQueryable<T>, string, object)
Filter IQueryable by property name dynamically.
ArrayLeaf
redb.Core.Query.Filtering
ArrayLeaf(string, long, string, ArrayLeafOperator, object?, ListItemProperty?)
Leaf node - a specific operation on an array field.
BaseFilterExpressionParser
redb.Core.Query.Parsing
ParseRedbFilter(Expression<Func<IRedbObject, bool>>)
Parse LINQ predicate for base RedbObject fields (id, name, parent_id, etc.).
CacheStatistics
redb.Core.Models.Permissions
ChildObjectInfo
redb.Core.Models
ObjectId
Object ID
ChildObjectInfo
redb.Core.Providers.Base
ComparisonExpression
redb.Core.Query.QueryExpressions
ComparisonExpression(PropertyInfo, ComparisonOperator, object?)
Comparison expression (property operator value)
ConstantValueExpression
redb.Core.Query.QueryExpressions
ConstantValueExpression(object?, Type)
Constant value
E117_ListItemWithObject
redb.Examples.Examples
E186_ObjectReference
redb.Examples.Examples
EditorType
redb.PropsEditor.Services
EffectivePermissionResult
redb.Core.Models.Permissions
ObjectId
Object ID
ExportFooter
redb.Export.Models
TotalObjects
Total number of object instance records exported.
GlobalPropsCache
redb.Core.Caching
FilterNeedToLoad<TProps>(List<(long objectId, Guid hash)>, out Dictionary<long, RedbObject<TProps>>)
BULK: determine which objects need to be loaded from DB (set difference).
Initialize(IRedbObjectCache)
Initialize cache for this domain (called once at application startup per domain).
Set<TProps>(RedbObject<TProps>)
Save WHOLE RedbObject to cache.
IBulkOperations
redb.Core.Data
BulkDeleteObjectsAsync(IEnumerable<long>)
Bulk delete objects by IDs.
BulkDeleteValuesByObjectIdsAsync(IEnumerable<long>)
Bulk delete values by object IDs.
BulkInsertObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk insert objects using COPY protocol.
BulkUpdateObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk update objects.
IFilterExpressionParser
redb.Core.Query.QueryExpressions
ParseRedbFilter(Expression<Func<IRedbObject, bool>>)
Parse lambda expression for filtering by base IRedbObject fields
IKeyGenerator
redb.Core.Data
NextObjectIdAsync()
Generate next unique ID for objects.
NextObjectIdBatchAsync(int)
Generate batch of object IDs for bulk operations.
ILazyPropsLoader
redb.Core.Providers
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?)
OPTIMIZED Props loading with structure_ids filter and custom depth.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?)
OPTIMIZED Props loading with structure_ids filter.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?)
BULK Props loading with custom depth for nested RedbObject.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>)
BULK Props loading for multiple objects with caching and parallelism.
IListProvider
redb.Core.Providers
InExpression
redb.Core.Query.QueryExpressions
InExpression(PropertyInfo, IReadOnlyList<object>)
Expression for checking inclusion in list
IObjectStorageProvider
redb.Core.Providers
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser)
BULK INSERT with explicit user: Create many new objects (does NOT check permissions).
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>)
BULK INSERT: Create many new objects in one operation (does NOT check permissions).
DeleteAsync(IEnumerable<IRedbObject>, IRedbUser)
Bulk delete objects by interface with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IEnumerable<IRedbObject>)
Bulk delete objects by interface (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IRedbObject, IRedbUser)
Delete object with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IRedbObject)
Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
LoadAsync<TProps>(IRedbObject, int, bool?)
Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?)
Load object from EAV with explicit user (uses config.DefaultCheckPermissionsOnLoad).
LoadWithParentsAsync<TProps>(IRedbObject, int, bool?)
Load object from EAV with parent chain to root (uses _securityContext).
LoadWithParentsAsync<TProps>(IRedbObject, IRedbUser, int, bool?)
Load object from EAV with parent chain to root with explicit user.
SaveAsync(IEnumerable<IRedbObject>, IRedbUser)
Bulk save of polymorphic objects with explicit user (uses config).
SaveAsync(IEnumerable<IRedbObject>)
Bulk save of polymorphic objects (uses _securityContext and config).
SaveAsync(IRedbObject, IRedbUser)
Save object to EAV with explicit user. Determines type internally.
SaveAsync(IRedbObject)
Save object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser)
Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
SaveAsync<TProps>(IRedbObject<TProps>)
Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?)
Mark objects for soft-deletion with explicit user.
SoftDeleteAsync(IEnumerable<IRedbObject>, long?)
Mark objects for soft-deletion (uses _securityContext).
IOrderedRedbQueryable<TProps>
redb.Core.Query
ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional descending sort by IRedbObject base fields.
ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional ascending sort by IRedbObject base fields.
IOrderingExpressionParser
redb.Core.Query.QueryExpressions
ParseRedbOrdering<TKey>(Expression<Func<IRedbObject, TKey>>, SortDirection)
🆕 Parse sorting expression by base IRedbObject fields (id, name, date_create, etc.)
IPermissionProvider
redb.Core.Providers
CanUserDeleteObject(IRedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(IRedbObject)
Check if current user can delete object.
CanUserDeleteObject(RedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(RedbObject)
Check if current user can delete object.
CanUserEditObject(IRedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(IRedbObject)
Check if current user can edit object.
CanUserEditObject(RedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(RedbObject)
Check if current user can edit object.
CanUserInsertScheme(RedbObject, IRedbUser)
Check if user can create objects in object's scheme.
CanUserSelectObject(IRedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(IRedbObject)
Check if current user can read object.
CanUserSelectObject(RedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(RedbObject)
Check if current user can read object.
GetEffectivePermissionsAsync(IRedbUser, IRedbObject)
Get effective user permissions for object (including inheritance and roles).
GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[])
Get effective user permissions for multiple objects (batch).
GetPermissionsByObjectAsync(IRedbObject)
Get permissions for object.
GetReadableObjectIds()
Get IDs of objects readable by current user.
GetReadableObjectIds(IRedbUser)
Get IDs of objects readable by user.
GrantPermissionAsync(IRedbRole, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to role.
GrantPermissionAsync(IRedbUser, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to user.
RevokePermissionAsync(IRedbRole, IRedbObject, IRedbUser?)
Revoke permission from role.
RevokePermissionAsync(IRedbUser, IRedbObject, IRedbUser?)
Revoke permission from user.
IPropsMaterializer
redb.Core.Materialization
MaterializeManyAsync<TProps>(IReadOnlyList<IRedbObject>, IEnumerable<long>?)
Batch materialize Props for multiple objects.
IQueryableProvider
redb.Core.Providers
TreeQuery<TProps>(IEnumerable<IRedbObject>, int?)
Create tree query limited to subtrees of object list (synchronous).
TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?)
Create tree query limited to subtrees of object list with specified user (synchronous).
TreeQuery<TProps>(IRedbObject?, int?)
Create tree query limited to subtree (synchronous).
TreeQuery<TProps>(IRedbObject?, IRedbUser, int?)
Create tree query limited to subtree with specified user (synchronous).
IRedbConnection
redb.Core.Data
ExecuteAsync(string, params object[])
Execute SQL command (INSERT, UPDATE, DELETE) and return affected rows count.
ExecuteJsonAsync(string, params object[])
Execute raw SQL function returning JSON.
ExecuteJsonListAsync(string, params object[])
Execute raw SQL function returning multiple JSON rows.
ExecuteScalarAsync<T>(string, params object[])
Execute SQL query and return scalar value.
QueryAsync<T>(string, params object[])
Execute SQL query and return list of mapped objects.
QueryFirstOrDefaultAsync<T>(string, params object[])
Execute SQL query and return first result or null.
QueryScalarListAsync<T>(string, params object[])
Execute SQL query and return list of scalar values (first column only).
IRedbContext
redb.Core.Data
ExecuteAsync(string, params object[])
Execute SQL command (INSERT, UPDATE, DELETE).
ExecuteJsonAsync(string, params object[])
Execute SQL returning JSON.
ExecuteJsonListAsync(string, params object[])
Execute SQL returning multiple JSON rows.
ExecuteScalarAsync<T>(string, params object[])
Execute SQL query and return scalar value.
NextObjectIdAsync()
Get next object ID.
NextObjectIdBatchAsync(int)
Get batch of object IDs.
QueryAsync<T>(string, params object[])
Execute SQL query and return list of mapped objects.
QueryFirstOrDefaultAsync<T>(string, params object[])
Execute SQL query and return first result or null.
QueryScalarListAsync<T>(string, params object[])
Execute SQL query and return list of scalar values (first column only).
IRedbList
redb.Core.Models.Contracts
AddItem(string, IRedbObject, string?)
Add item to list with linked object (Aggregate Root pattern)
CreateItem(string, IRedbObject, string?)
Create item for list with linked object
IRedbListItem
redb.Core.Models.Contracts
IRedbObject
redb.Core.Models.Contracts
IRedbObject<TProps>
redb.Core.Models.Contracts
IRedbObjectCache
redb.Core.Caching
FilterNeedToLoad<TProps>(List<(long objectId, Guid hash)>, out Dictionary<long, RedbObject<TProps>>)
BULK: determine which objects need to be loaded from DB (set difference)
Set<TProps>(RedbObject<TProps>)
Save WHOLE RedbObject to cache
IRedbObjectSerializer
redb.Core.Serialization
IRedbQueryable<TProps>
redb.Core.Query
AggregateAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Flexible aggregation - choose what to aggregate via Agg.Sum/Avg/Min/Max/Count.
AggregateRedbAsync<TResult>(Expression<Func<IRedbObject, TResult>>)
Flexible aggregation for IRedbObject base fields ONLY.
AverageRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Average of IRedbObject base field values.
DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Group by IRedbObject base fields (id, scheme_id, parent_id, etc.).
MaxRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Maximum IRedbObject base field value (ValueLong, Key, DateCreate, etc.).
MinRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Minimum IRedbObject base field value (ValueLong, Key, DateCreate, etc.).
OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort descending by IRedbObject base fields.
OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
Select<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Project fields - return only selected properties.
SumRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Sum of IRedbObject base field values (ValueLong, Key, etc.).
WhereChildrenOf(IRedbObject)
Direct children of specified object.
WhereDescendantsOf(IRedbObject, int?)
All descendants of specified object (recursive).
WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>)
Filter by IRedbObject base field in list (WHERE _field IN (...)).
WhereRedb(Expression<Func<IRedbObject, bool>>)
Filter by base object fields (Id, Name, ParentId, etc.).
IRedbWindowedQueryable<TProps>
redb.Core.Query.Window
SelectAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Projection with window functions.
ToSqlStringAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Returns SQL string for debugging (like EF Core ToQueryString).
ISchemeSyncProvider
redb.Core.Providers
EnsureObjectSchemeAsync(string)
Get or create scheme for Object type (without Props).
GetObjectSchemeAsync(string)
Get scheme for Object type by name.
ISqlDialect
redb.Core.Query
LazyLoader_GetObjectJson()
Get object as JSON via get_object_json. Params: $1=objectId, $2=maxDepth
LazyLoader_GetObjectJsonBatch()
Get multiple objects as JSON via get_object_json batch. Params: $1=objectIds array
LazyLoader_SelectObjectBase()
Get object base fields (without Props). Params: $1=objectId
LazyLoader_SelectObjectHash()
Get object hash for cache validation. Params: $1=objectId
ListItems_SelectByObjectId()
SELECT list items by object reference. Params: $1=objectId
ListItems_UpdateAliasAndObject()
UPDATE list item alias and idObject. Params: $1=alias, $2=idObject, $3=id
ObjectStorage_CheckObjectExists()
Check if object exists by ID. Params: $1=objectId
ObjectStorage_DeleteById()
DELETE object by ID. Params: $1=objectId
ObjectStorage_DeleteByIds()
DELETE objects by IDs (bulk). Params: $1=objectIds (array)
ObjectStorage_DeleteValuesByObjectId()
DELETE all values for object. Params: $1=objectId
ObjectStorage_GetObjectJson()
SELECT object as JSON. Params: $1=objectId, $2=depth
ObjectStorage_GetObjectsJsonBulk()
SELECT objects as JSON (bulk). Params: $1=objectIds (array), $2=depth
ObjectStorage_InsertObject()
INSERT new object with all fields.
ObjectStorage_LockObjectsForUpdate()
Lock objects for update (row locking). Params: $1=objectIds (array)
ObjectStorage_SelectAllTypes()
SELECT all types (for cache preload). No params.
ObjectStorage_SelectExistingIds()
SELECT existing object IDs from array. Params: $1=objectIds (array)
ObjectStorage_SelectIdHash()
SELECT only Id and Hash for object. Params: $1=objectId
ObjectStorage_SelectIdHashScheme()
SELECT Id, Hash, IdScheme for cache check. Params: $1=objectId
ObjectStorage_SelectObjectById()
SELECT all base fields for object by ID. Params: $1=objectId
ObjectStorage_SelectObjectsByIds()
SELECT all base fields for objects by IDs. Params: $1=objectIds (array)
ObjectStorage_SelectSchemeById()
SELECT scheme by ID. Params: $1=schemeId
ObjectStorage_SelectSchemeIdByObjectId()
SELECT scheme ID for object. Params: $1=objectId
ObjectStorage_SelectSchemeIdsForObjects()
SELECT scheme IDs for objects. Params: $1=objectIds (array)
ObjectStorage_SelectSchemesByIds()
SELECT schemes by IDs. Params: $1=schemeIds (array)
ObjectStorage_SelectStructuresWithMetadata()
SELECT structure metadata by scheme ID. Params: $1=schemeId
ObjectStorage_SelectStructureTypes()
SELECT structure types by IDs. Params: $1=structureIds (array)
ObjectStorage_SelectTypeById()
SELECT type info by ID. Params: $1=typeId
ObjectStorage_SelectValueById()
SELECT single value by ID. Params: $1=valueId
ObjectStorage_SelectValuesForObjects()
SELECT all values for object IDs (ChangeTracking). Params: $1=objectIds (array)
ObjectStorage_SelectValuesWithTypes()
SELECT existing values with types. Params: $1=objectId, $2=structureIds (array)
ObjectStorage_UpdateObject()
UPDATE object with all fields.
Permissions_DeleteByUserRoleObject()
DELETE permission by user/role/object. Params: $1=userId, $2=roleId, $3=objectId
Permissions_GetEffectiveForObject()
Get user permissions for object via SQL function or query.
Permissions_SelectByObject()
SELECT permissions by object. Params: $1=objectId
Permissions_SelectByUserRoleObject()
SELECT permission by user/role/object. Params: $1=userId, $2=roleId, $3=objectId
Permissions_SelectReadableObjectIds()
SELECT readable object IDs for user. Params: $1=userId
Query_LoadObjectsByIdsSql(string, int)
SQL for loading objects by IDs as JSON.
Query_SearchObjectsBaseFunction()
Name of the search function for objects base fields only (lazy loading).
Query_SearchObjectsFunction()
Name of the search function for objects with facets (eager loading).
Query_SearchObjectsProjectionByIdsFunction()
Name of the search function with projection by IDs.
Query_SearchObjectsProjectionByPathsFunction()
Name of the search function with projection by paths.
Query_SearchObjectsSimpleSql()
SQL for simple search objects (used in distinct).
Query_SearchTreeObjectsBaseFunction()
Name of the tree search function base fields only (lazy loading).
Query_SearchTreeObjectsFunction()
Name of the tree search function (eager loading).
Schemes_InsertObject()
INSERT Object scheme. Params: $1=id, $2=name, $3=type
Schemes_SelectObjectByName()
SELECT Object scheme by name and type. Params: $1=name, $2=type
Tree_DeleteObjectsByIds()
DELETE objects by IDs. Params: $1=objectIds (array)
Tree_DeleteValuesByObjectIds()
DELETE values by object IDs. Params: $1=objectIds (array)
Tree_GetObjectJson()
Get object as JSON. Params: $1=objectId, $2=depth
Tree_ObjectExists()
Check if object exists. Params: $1=objectId
ISqlDialectPro
redb.Core.Pro.Query
Materialization_SelectObjectById()
Select object by ID with all base fields.
Materialization_SelectObjectsByIds()
Bulk select objects by IDs (for nested objects).
Materialization_SelectValuesByObjectAndStructureIds()
Bulk select values by object IDs and structure IDs.
Materialization_SelectValuesByObjectIds()
Bulk select values by object IDs.
ITreeProvider
redb.Core.Providers
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser)
Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject)
Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
DeleteSubtreeAsync(IRedbObject, IRedbUser)
Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteSubtreeAsync(IRedbObject)
Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
GetChildrenAsync<TProps>(IRedbObject, IRedbUser)
Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetChildrenAsync<TProps>(IRedbObject)
Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, int?)
Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?)
Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetPathToRootAsync<TProps>(IRedbObject, IRedbUser)
Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetPathToRootAsync<TProps>(IRedbObject)
Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetPolymorphicChildrenAsync(IRedbObject, IRedbUser)
Get all direct children of object regardless of their schemes with explicit user.
GetPolymorphicChildrenAsync(IRedbObject)
Get all direct children of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, int?)
Get all polymorphic descendants of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?)
Get all polymorphic descendants of object with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser)
Get polymorphic path from object to root with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject)
Get polymorphic path from object to root - objects can be of different schemes.
LoadPolymorphicTreeAsync(IRedbObject, int?)
Load polymorphic tree/subtree - supports objects of different schemes in one tree.
LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?)
Load polymorphic tree/subtree with explicit user.
LoadTreeAsync<TProps>(IRedbObject, int?)
Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?)
Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser)
Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
MoveObjectAsync(IRedbObject, IRedbObject?)
Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
ITreeQueryProvider
redb.Core.Query
LoadObjectsByIdsAsync(List<long>, int?)
Load full untyped objects by ID list via v_objects_json.
LoadObjectsByIdsAsync<TProps>(List<long>, int?)
Load full typed objects by ID list via v_objects_json.
ITreeRedbObject
redb.Core.Models.Contracts
IsAncestorOf(ITreeRedbObject)
Checks if current node is ancestor of specified node
IsDescendantOf(ITreeRedbObject)
Checks if current node is descendant of specified node
ITreeRedbObject<TProps>
redb.Core.Models.Contracts
IWindowSpec<TProps>
redb.Core.Query.Window
OrderByDescRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort within window by IRedbObject base field (descending).
OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort within window by IRedbObject base field (ascending).
PartitionByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Partition by IRedbObject base field (SchemeId, OwnerId, etc.).
LazyPropsLoader
redb.MSSql.Providers
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?)
BULK Props loading with projection filter and custom depth.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?)
BULK Props loading with projection filter (for Select projections).
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?)
BULK Props loading with custom depth for nested RedbObject.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>)
BULK Props loading for multiple objects via get_object_json batch.
LoadPropsForManyPolymorphicAsync(List<IRedbObject>)
BULK loading for polymorphic objects (different schemes).
LazyPropsLoader
redb.Postgres.Providers
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?)
BULK Props loading with projection filter and custom depth.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?)
BULK Props loading with projection filter (for Select projections).
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?)
BULK Props loading with custom depth for nested RedbObject.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>)
BULK Props loading for multiple objects via get_object_json batch.
LoadPropsForManyPolymorphicAsync(List<IRedbObject>)
BULK loading for polymorphic objects (different schemes).
ListItemRecord
redb.Export.Models
IdObject
Optional object reference.
ListProviderBase
redb.Core.Providers.Base
MemoryRedbObjectCache
redb.Core.Caching
FilterNeedToLoad<TProps>(List<(long objectId, Guid hash)>, out Dictionary<long, RedbObject<TProps>>)
BULK: determine which objects need to be loaded from DB.
Set<TProps>(RedbObject<TProps>)
Save WHOLE RedbObject to cache
MigrationExpressionCompiler
redb.Core.Pro.Migration
CompileDefaultValueAsync(long, string, object?)
Compile DefaultValue to UPDATE SQL
MissingObjectStrategy
redb.Core.Models.Configuration
MissingObjectStrategyJsonConverter
redb.Core.Configuration
Write(Utf8JsonWriter, MissingObjectStrategy, JsonSerializerOptions)
Writes a specified value as JSON.
MsSqlDialect
redb.MSSql.Sql
LazyLoader_GetObjectJson()
Get object as JSON via get_object_json. Params: $1=objectId, $2=maxDepth
LazyLoader_GetObjectJsonBatch()
Batch load Props JSON for multiple objects. Uses function call directly in SELECT.
LazyLoader_SelectObjectBase()
Get object base fields (without Props). Params: $1=objectId
LazyLoader_SelectObjectHash()
Get object hash for cache validation. Params: $1=objectId
ListItems_SelectByObjectId()
SELECT list items by object reference. Params: $1=objectId
ListItems_UpdateAliasAndObject()
UPDATE list item alias and idObject. Params: $1=alias, $2=idObject, $3=id
ObjectStorage_CheckObjectExists()
Check if object exists by ID. Params: $1=objectId
ObjectStorage_DeleteById()
DELETE object by ID. Params: $1=objectId
ObjectStorage_DeleteByIds()
DELETE objects by IDs (bulk). Params: $1=objectIds (array)
ObjectStorage_DeleteValuesByObjectId()
DELETE all values for object. Params: $1=objectId
ObjectStorage_GetObjectJson()
SELECT object as JSON. Params: $1=objectId, $2=depth
ObjectStorage_GetObjectsJsonBulk()
Bulk get object JSON. Uses function call directly in SELECT.
ObjectStorage_InsertObject()
INSERT new object with all fields.
ObjectStorage_LockObjectsForUpdate()
Lock objects for update (row locking). Params: $1=objectIds (array)
ObjectStorage_SelectAllTypes()
SELECT all types (for cache preload). No params.
ObjectStorage_SelectExistingIds()
SELECT existing object IDs from array. Params: $1=objectIds (array)
ObjectStorage_SelectIdHash()
SELECT only Id and Hash for object. Params: $1=objectId
ObjectStorage_SelectIdHashScheme()
SELECT Id, Hash, IdScheme for cache check. Params: $1=objectId
ObjectStorage_SelectObjectById()
SELECT all base fields for object by ID. Params: $1=objectId
ObjectStorage_SelectObjectsByIds()
SELECT all base fields for objects by IDs. Params: $1=objectIds (array)
ObjectStorage_SelectSchemeById()
SELECT scheme by ID. Params: $1=schemeId
ObjectStorage_SelectSchemeIdByObjectId()
SELECT scheme ID for object. Params: $1=objectId
ObjectStorage_SelectSchemeIdsForObjects()
SELECT scheme IDs for objects. Params: $1=objectIds (array)
ObjectStorage_SelectSchemesByIds()
SELECT schemes by IDs. Params: $1=schemeIds (array)
ObjectStorage_SelectStructuresWithMetadata()
SELECT structure metadata by scheme ID. Params: $1=schemeId
ObjectStorage_SelectStructureTypes()
SELECT structure types by IDs. Params: $1=structureIds (array)
ObjectStorage_SelectTypeById()
SELECT type info by ID. Params: $1=typeId
ObjectStorage_SelectValueById()
SELECT single value by ID. Params: $1=valueId
ObjectStorage_SelectValuesForObjects()
SELECT all values for object IDs (ChangeTracking). Params: $1=objectIds (array)
ObjectStorage_SelectValuesWithTypes()
SELECT existing values with types. Params: $1=objectId, $2=structureIds (array)
ObjectStorage_UpdateObject()
UPDATE object with all fields.
Permissions_DeleteByUserRoleObject()
DELETE permission by user/role/object. Params: $1=userId, $2=roleId, $3=objectId
Permissions_GetEffectiveForObject()
Uses MSSQL function get_user_permissions_for_object() from redb_permissions.sql.
Permissions_SelectByObject()
SELECT permissions by object. Params: $1=objectId
Permissions_SelectByUserRoleObject()
MSSQL equivalent of IS NOT DISTINCT FROM.
Permissions_SelectReadableObjectIds()
SELECT readable object IDs for user. Params: $1=userId
Query_LoadObjectsByIdsSql(string, int)
MSSQL: Load objects by IDs as JSON using get_object_json function.
Query_SearchObjectsBaseFunction()
Name of the search function for objects base fields only (lazy loading).
Query_SearchObjectsFunction()
Name of the search function for objects with facets (eager loading).
Query_SearchObjectsProjectionByIdsFunction()
Name of the search function with projection by IDs.
Query_SearchObjectsProjectionByPathsFunction()
Name of the search function with projection by paths.
Query_SearchObjectsSimpleSql()
Simple search for Delete operations - uses search_objects_with_facets with minimal params.
Query_SearchTreeObjectsBaseFunction()
Name of the tree search function base fields only (lazy loading).
Query_SearchTreeObjectsFunction()
Name of the tree search function (eager loading).
Schemes_InsertObject()
INSERT Object scheme. Params: $1=id, $2=name, $3=type
Schemes_SelectObjectByName()
SELECT Object scheme by name and type. Params: $1=name, $2=type
Tree_DeleteObjectsByIds()
DELETE objects by IDs. Params: $1=objectIds (array)
Tree_DeleteValuesByObjectIds()
DELETE values by object IDs. Params: $1=objectIds (array)
Tree_GetObjectJson()
Get object as JSON. Params: $1=objectId, $2=depth
Tree_ObjectExists()
Check if object exists. Params: $1=objectId
MssqlObjectStorageProvider
redb.MSSql.Providers
MssqlObjectStorageProvider(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, IListProvider?, ILogger?)
Creates a new MssqlObjectStorageProvider instance.
MssqlQueryableProvider
redb.MSSql.Providers
MssqlQueryProvider
redb.MSSql.Query
MssqlTreeProvider
redb.MSSql.Providers
MssqlTreeProvider(IRedbContext, IObjectStorageProvider, IPermissionProvider, IRedbObjectSerializer, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration?, ILogger?)
Creates MSSQL tree provider with default MsSqlDialect.
MssqlTreeQueryProvider
redb.MSSql.Query
NpgsqlBulkOperations
redb.Postgres.Data
BulkDeleteObjectsAsync(IEnumerable<long>)
Bulk delete objects by IDs.
BulkDeleteValuesByObjectIdsAsync(IEnumerable<long>)
Bulk delete values by object IDs.
BulkInsertObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk insert objects using COPY protocol.
BulkUpdateObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk update objects using UPDATE FROM VALUES.
NpgsqlRedbConnection
redb.Postgres.Data
ExecuteAsync(string, params object[])
Execute SQL command (INSERT, UPDATE, DELETE).
ExecuteJsonAsync(string, params object[])
Execute SQL returning JSON (for PostgreSQL functions).
ExecuteJsonListAsync(string, params object[])
Execute SQL returning multiple JSON rows.
ExecuteScalarAsync<T>(string, params object[])
Execute SQL query and return scalar value.
QueryAsync<T>(string, params object[])
Execute SQL query and map results to list of objects.
QueryFirstOrDefaultAsync<T>(string, params object[])
Execute SQL query and return first result.
QueryScalarListAsync<T>(string, params object[])
Execute SQL query and return list of scalar values (first column only).
ObjectIdResetStrategy
redb.Core.Models.Configuration
ObjectIdResetStrategyJsonConverter
redb.Core.Configuration
Write(Utf8JsonWriter, ObjectIdResetStrategy, JsonSerializerOptions)
Writes a specified value as JSON.
ObjectRecord
redb.Export.Models
ObjectStorageProviderBase
redb.Core.Providers.Base
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser)
🚀 BULK INSERT with explicit user: Create multiple new objects (WITHOUT permission checks)
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>)
🚀 BULK INSERT: Create multiple new objects in one operation (WITHOUT permission checks)
AssignMissingIds(List<IRedbObject>, IRedbUser)
🎯 STEP 3: Assigning ID via GetNextKey() to all objects without ID
CacheNestedObjects(object)
Recursively caches all nested RedbObject found in Props
CollectAllObjectsRecursively(IRedbObject, List<IRedbObject>, HashSet<long>)
🔍 STEP 2: Recursive collection of all IRedbObject (main + nested)
ConvertToObjectRecord(IRedbObject)
Convert IRedbObject to RedbObjectRow for bulk operations
DeleteAsync(IEnumerable<IRedbObject>, IRedbUser)
Bulk deletion of objects by interface with explicit user
DeleteAsync(IEnumerable<IRedbObject>)
Bulk deletion of objects by interface (uses _securityContext)
DeleteAsync(IRedbObject, IRedbUser)
Deletes an object from the database using atomic ExecuteDeleteAsync.
DeleteAsync(IRedbObject)
Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
EnsureSchemesForAllTypes(List<IRedbObject>)
🏗️ STEP 4: Creating/verifying schemas for all object types (using PostgresSchemeSyncProvider)
ExecuteBatchByStrategy(EavSaveStrategy, List<IRedbObject>, List<RedbValue>)
Executes batch save by strategy. OpenSource: only DeleteInsert.
GetSchemeIdForObject(long)
Get scheme ID for object
LoadAsync<TProps>(IRedbObject, int, bool?)
Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad)
LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?)
Load object from EAV with explicitly specified user (uses config.DefaultCheckPermissionsOnLoad)
LoadObjectsEagerAsync(List<long>, int)
EAGER loading: get_object_json for all IDs
LoadObjectsLazyAsync(List<long>)
LAZY loading: base fields from _objects + LoadPropsForManyAsync
LoadWithParentsAsync<TProps>(IRedbObject, int, bool?)
Load object with parent chain to root (uses _securityContext).
LoadWithParentsAsync<TProps>(IRedbObject, IRedbUser, int, bool?)
Load object by ID with parent chain to root with explicit user.
ObjectStorageProviderBase(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, ISqlDialect, IListProvider?, ILogger?)
Creates a new ObjectStorageProviderBase instance.
PrepareValuesByStrategy(List<IRedbObject>, List<RedbValue>, bool)
Step 6: Strategy selection for values processing.
PrepareValuesWithTreeDeleteInsert(List<IRedbObject>, List<RedbValue>)
DeleteInsert strategy: delete all existing values, then insert new ones.
ProcessAllObjectsPropertiesRecursively(List<IRedbObject>, List<RedbValue>)
🔄 STEP 5: Recursive processing of Props of all objects → RedbValue lists
SaveAsync(IEnumerable<IRedbObject>, IRedbUser)
🚀 BATCH SAVE with explicit user
SaveAsync(IEnumerable<IRedbObject>)
🚀 BATCH SAVE: Save multiple objects (new + updates)
SaveAsync(IRedbObject, IRedbUser)
Save single object via interface with explicit user.
SaveAsync(IRedbObject)
Save single object via interface. Type determined internally.
SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser)
Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
SaveAsync<TProps>(IRedbObject<TProps>)
Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
SaveAsyncNew<TProps>(IRedbObject<TProps>, IRedbUser)
🚀 NEW SAVEASYNC: Correct recursive processing of all data types
SaveBatchWithDeleteInsertStrategy(List<IRedbObject>, List<RedbValue>)
DeleteInsert batch strategy: delete ALL values, BulkInsert/BulkUpdate of objects, BulkInsert of valu...
SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?)
Mark objects for soft-deletion with explicit user.
SoftDeleteAsync(IEnumerable<IRedbObject>, long?)
Mark objects for soft-deletion (uses _securityContext).
ObjectStorageProviderBase.StructureFullInfo
redb.Core.Providers.Base.ObjectStorageProviderBase
ObjectStorageProviderExtensions
redb.Core.Providers.Base
OrderingExpressionParser
redb.Core.Query
ParseRedbOrdering<TKey>(Expression<Func<IRedbObject, TKey>>, SortDirection)
Parse sorting by base IRedbObject fields (id, name, date_create, etc.)
PermissionProviderBase
redb.Core.Providers.Base
CanUserDeleteObject(IRedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(IRedbObject)
Check if current user can delete object.
CanUserDeleteObject(RedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(RedbObject)
Check if current user can delete object.
CanUserEditObject(IRedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(IRedbObject)
Check if current user can edit object.
CanUserEditObject(RedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(RedbObject)
Check if current user can edit object.
CanUserInsertScheme(RedbObject, IRedbUser)
Check if user can create objects in object's scheme.
CanUserSelectObject(IRedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(IRedbObject)
Check if current user can read object.
CanUserSelectObject(RedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(RedbObject)
Check if current user can read object.
GetEffectivePermissionsAsync(IRedbUser, IRedbObject)
Get effective user permissions for object (including inheritance and roles).
GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[])
Get effective user permissions for multiple objects (batch).
GetPermissionsByObjectAsync(IRedbObject)
Get permissions for object.
GetReadableObjectIds()
Get IDs of objects readable by current user.
GetReadableObjectIds(IRedbUser)
Get IDs of objects readable by user.
GetReadableObjectIdsAsync(long)
Async version of GetReadableObjectIds.
GrantPermissionAsync(IRedbRole, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to role.
GrantPermissionAsync(IRedbUser, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to user.
RevokePermissionAsync(IRedbRole, IRedbObject, IRedbUser?)
Revoke permission from role.
RevokePermissionAsync(IRedbUser, IRedbObject, IRedbUser?)
Revoke permission from user.
PermissionRequest
redb.Core.Models.Permissions
ObjectId
Object ID (0 for global permissions)
PolymorphicRedbObjectConverter
redb.Core.Serialization
Write(Utf8JsonWriter, IRedbObject?, JsonSerializerOptions)
Writes a specified value as JSON.
PostgresObjectStorageProvider
redb.Postgres.Providers
PostgresObjectStorageProvider(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, IListProvider?, ILogger?)
Creates a new PostgresObjectStorageProvider instance.
PostgreSqlDialect
redb.Postgres.Sql
LazyLoader_GetObjectJson()
Get object as JSON via get_object_json. Params: $1=objectId, $2=maxDepth
LazyLoader_GetObjectJsonBatch()
Get multiple objects as JSON via get_object_json batch. Params: $1=objectIds array
LazyLoader_SelectObjectBase()
Get object base fields (without Props). Params: $1=objectId
LazyLoader_SelectObjectHash()
Get object hash for cache validation. Params: $1=objectId
ListItems_SelectByObjectId()
SELECT list items by object reference. Params: $1=objectId
ListItems_UpdateAliasAndObject()
UPDATE list item alias and idObject. Params: $1=alias, $2=idObject, $3=id
ObjectStorage_CheckObjectExists()
Check if object exists by ID. Params: $1=objectId
ObjectStorage_DeleteById()
DELETE object by ID. Params: $1=objectId
ObjectStorage_DeleteByIds()
DELETE objects by IDs (bulk). Params: $1=objectIds (array)
ObjectStorage_DeleteValuesByObjectId()
DELETE all values for object. Params: $1=objectId
ObjectStorage_GetObjectJson()
SELECT object as JSON. Params: $1=objectId, $2=depth
ObjectStorage_GetObjectsJsonBulk()
SELECT objects as JSON (bulk). Params: $1=objectIds (array), $2=depth
ObjectStorage_InsertObject()
INSERT new object with all fields.
ObjectStorage_LockObjectsForUpdate()
Lock objects for update (row locking). Params: $1=objectIds (array)
ObjectStorage_SelectAllTypes()
SELECT all types (for cache preload). No params.
ObjectStorage_SelectExistingIds()
SELECT existing object IDs from array. Params: $1=objectIds (array)
ObjectStorage_SelectIdHash()
SELECT only Id and Hash for object. Params: $1=objectId
ObjectStorage_SelectIdHashScheme()
SELECT Id, Hash, IdScheme for cache check. Params: $1=objectId
ObjectStorage_SelectObjectById()
SELECT all base fields for object by ID. Params: $1=objectId
ObjectStorage_SelectObjectsByIds()
SELECT all base fields for objects by IDs. Params: $1=objectIds (array)
ObjectStorage_SelectSchemeById()
SELECT scheme by ID. Params: $1=schemeId
ObjectStorage_SelectSchemeIdByObjectId()
SELECT scheme ID for object. Params: $1=objectId
ObjectStorage_SelectSchemeIdsForObjects()
SELECT scheme IDs for objects. Params: $1=objectIds (array)
ObjectStorage_SelectSchemesByIds()
SELECT schemes by IDs. Params: $1=schemeIds (array)
ObjectStorage_SelectStructuresWithMetadata()
SELECT structure metadata by scheme ID. Params: $1=schemeId
ObjectStorage_SelectStructureTypes()
SELECT structure types by IDs. Params: $1=structureIds (array)
ObjectStorage_SelectTypeById()
SELECT type info by ID. Params: $1=typeId
ObjectStorage_SelectValueById()
SELECT single value by ID. Params: $1=valueId
ObjectStorage_SelectValuesForObjects()
SELECT all values for object IDs (ChangeTracking). Params: $1=objectIds (array)
ObjectStorage_SelectValuesWithTypes()
SELECT existing values with types. Params: $1=objectId, $2=structureIds (array)
ObjectStorage_UpdateObject()
UPDATE object with all fields.
Permissions_DeleteByUserRoleObject()
DELETE permission by user/role/object. Params: $1=userId, $2=roleId, $3=objectId
Permissions_GetEffectiveForObject()
CRITICAL: Uses PostgreSQL function get_user_permissions_for_object()!
Permissions_SelectByObject()
SELECT permissions by object. Params: $1=objectId
Permissions_SelectByUserRoleObject()
SELECT permission by user/role/object. Params: $1=userId, $2=roleId, $3=objectId
Permissions_SelectReadableObjectIds()
SELECT readable object IDs for user. Params: $1=userId
Query_LoadObjectsByIdsSql(string, int)
PostgreSQL: Load objects by IDs as JSON using get_object_json function.
Query_SearchObjectsBaseFunction()
Name of the search function for objects base fields only (lazy loading).
Query_SearchObjectsFunction()
Name of the search function for objects with facets (eager loading).
Query_SearchObjectsProjectionByIdsFunction()
Name of the search function with projection by IDs.
Query_SearchObjectsProjectionByPathsFunction()
Name of the search function with projection by paths.
Query_SearchObjectsSimpleSql()
Simple search for Delete operations - uses search_objects_with_facets with minimal params.
Query_SearchTreeObjectsBaseFunction()
Name of the tree search function base fields only (lazy loading).
Query_SearchTreeObjectsFunction()
Name of the tree search function (eager loading).
Schemes_InsertObject()
INSERT Object scheme. Params: $1=id, $2=name, $3=type
Schemes_SelectObjectByName()
SELECT Object scheme by name and type. Params: $1=name, $2=type
Tree_DeleteObjectsByIds()
DELETE objects by IDs. Params: $1=objectIds (array)
Tree_DeleteValuesByObjectIds()
DELETE values by object IDs. Params: $1=objectIds (array)
Tree_GetObjectJson()
Get object as JSON. Params: $1=objectId, $2=depth
Tree_ObjectExists()
Check if object exists. Params: $1=objectId
PostgresQueryableProvider
redb.Postgres.Providers
PostgresQueryProvider
redb.Postgres.Query
PostgresTreeProvider
redb.Postgres.Providers
PostgresTreeProvider(IRedbContext, IObjectStorageProvider, IPermissionProvider, IRedbObjectSerializer, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration?, ILogger?)
Creates PostgreSQL tree provider with default PostgreSqlDialect.
PostgresTreeQueryProvider
redb.Postgres.Query
ProjectionFieldExtractor
redb.Core.Query.Projection
ExtractAggregations<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Extracts information about requested aggregations
ExtractFieldPathStrings<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Extracts text field paths for SQL function search_objects_with_projection_by_paths.
ExtractStructureIds<TProps, TResult>(IRedbScheme, Expression<Func<RedbObject<TProps>, TResult>>)
Extracts HashSet of structure_ids for optimized BULK SELECT.
HasAggregations<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Checks if expression contains aggregation calls (Agg.Sum, etc.)
ProLazyPropsLoader
redb.Core.Pro.Materialization
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?, int?)
OPTIMIZED Props loading with structure_ids filter and custom depth.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, HashSet<long>?)
OPTIMIZED Props loading with structure_ids filter.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>, int?)
BULK Props loading with custom depth for nested RedbObject.
LoadPropsForManyAsync<TProps>(List<RedbObject<TProps>>)
BULK Props loading for multiple objects with caching and parallelism.
ProMsSqlDialect
redb.MSSql.Pro.Sql
Materialization_SelectObjectById()
Select object by ID with all base fields.
Materialization_SelectObjectsByIds()
Bulk select objects by IDs (for nested objects).
Materialization_SelectValuesByObjectAndStructureIds()
Bulk select values by object IDs and structure IDs.
Materialization_SelectValuesByObjectIds()
Bulk select values by object IDs.
ProMssqlObjectStorageProvider
redb.MSSql.Pro.Providers
ProMssqlTreeProvider
redb.MSSql.Pro.Providers
LoadObjectByIdAsync(long)
MSSqlQL: Load object by ID (base fields only).
ProObjectStorageProviderBase
redb.Core.Pro.Providers
ExecuteBatchByStrategy(EavSaveStrategy, List<IRedbObject>, List<RedbValue>)
Pro: Batch strategy with ChangeTracking support.
PrepareValuesByStrategy(List<IRedbObject>, List<RedbValue>, bool)
Pro: Full strategy support including ChangeTracking.
PropertyMetadata
redb.PropsEditor.Services
GetValue(object)
Gets the value of this property from an object.
SetValue(object, object?)
Sets the value of this property on an object.
ProPostgresObjectStorageProvider
redb.Postgres.Pro.Providers
ProPostgreSqlDialect
redb.Postgres.Pro.Sql
Materialization_SelectObjectById()
Select object by ID with all base fields.
Materialization_SelectObjectsByIds()
Bulk select objects by IDs (for nested objects).
Materialization_SelectValuesByObjectAndStructureIds()
Bulk select values by object IDs and structure IDs.
Materialization_SelectValuesByObjectIds()
Bulk select values by object IDs.
ProPostgresTreeProvider
redb.Postgres.Pro.Providers
LoadObjectByIdAsync(long)
PostgreSQL: Load object by ID (base fields only).
ProPropsMaterializer
redb.Core.Pro.Materialization
GetObjectProps<TProps>(long, List<RedbValue>, long, int, ConcurrentBag<long>)
Analog of get_object_json - works with values from MEMORY!
ProQueryableProvider
redb.MSSql.Pro.Providers
CreateMultiRootTreeQuery<TProps>(long, long?, bool, List<IRedbObject>, int?)
Override: MultiRoot TreeQuery also uses ProTreeQueryProvider.
ProQueryableProvider
redb.Postgres.Pro.Providers
CreateMultiRootTreeQuery<TProps>(long, long?, bool, List<IRedbObject>, int?)
Override: MultiRoot TreeQuery also uses ProTreeQueryProvider.
ProQueryProvider
redb.MSSql.Pro.Query
GetAggregateSqlPreviewAsync<TProps, TResult>(QueryContext<TProps>, Expression<Func<RedbObject<TProps>, TResult>>)
Pro Override: SQL Preview for aggregation
ProQueryProvider
redb.Postgres.Pro.Query
GetAggregateSqlPreviewAsync<TProps, TResult>(QueryContext<TProps>, Expression<Func<RedbObject<TProps>, TResult>>)
Pro Override: SQL Preview for aggregation
ProSqlBuilder
redb.MSSql.Pro.Query
FormatValueLegacy(object?)
Formats value for SQL (legacy, without parameters).
ProSqlBuilder
redb.Postgres.Pro.Query
ProSqlBuilderBase
redb.Core.Pro.Query
NormalizeDictionaryFieldName(string, object?)
Normalizes Dictionary field names.
ProTreeProviderBase
redb.Core.Pro.Providers
LoadDynamicObjectAsync(long, IRedbUser?)
Pro: PVT instead of get_object_json for dynamic object loading.
LoadObjectByIdAsync(long)
SQL: Load object by ID (base fields only).
MapRowToRedbObject<TProps>(RedbObjectRow)
Map RedbObjectRow to typed RedbObject.
ProTreeQueryProvider
redb.MSSql.Pro.Query
ProTreeQueryProvider
redb.Postgres.Pro.Query
QueryableProviderBase
redb.Core.Providers.Base
CreateMultiRootTreeQuery<TProps>(long, long?, bool, List<IRedbObject>, int?)
Create tree query for multiple root objects.
TreeQuery<TProps>(IEnumerable<IRedbObject>, int?)
Create tree query limited to subtrees of object list (synchronous).
TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?)
Create tree query limited to subtrees of object list with specified user (synchronous).
TreeQuery<TProps>(IRedbObject?, int?)
Create tree query limited to subtree (synchronous).
TreeQuery<TProps>(IRedbObject?, IRedbUser, int?)
Create tree query limited to subtree with specified user (synchronous).
QueryProviderBase
redb.Core.Query.Base
GetAggregateSqlPreviewAsync<TProps, TResult>(QueryContext<TProps>, Expression<Func<RedbObject<TProps>, TResult>>)
🔍 Returns SQL query for aggregation (for debugging)
ParseAggregateExpressionForPreview<TProps, TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Parses aggregate expression for preview (simplified version from RedbQueryable)
RedbContextBase
redb.Core.Data
ExecuteAsync(string, params object[])
Execute SQL command (INSERT, UPDATE, DELETE).
ExecuteJsonAsync(string, params object[])
Execute SQL returning JSON.
ExecuteJsonListAsync(string, params object[])
Execute SQL returning multiple JSON rows.
ExecuteScalarAsync<T>(string, params object[])
Execute SQL query and return scalar value.
NextObjectIdAsync()
Get next object ID.
NextObjectIdBatchAsync(int)
Get batch of object IDs.
QueryAsync<T>(string, params object[])
Execute SQL query and return list of mapped objects.
QueryFirstOrDefaultAsync<T>(string, params object[])
Execute SQL query and return first result or null.
QueryScalarListAsync<T>(string, params object[])
Execute SQL query and return list of scalar values (first column only).
RedbHash
redb.Core.Utils
ComputeFor(IRedbObject)
Compute hash for any IRedbObject - only from business data (Props).
ComputeForBaseFields(IRedbObject)
Compute hash from base value_* fields of IRedbObject (for Object schemes without Props).
RedbKeyGeneratorBase
redb.Core.Data
NextObjectIdAsync()
Get next object ID (uses shared static cache).
NextObjectIdBatchAsync(int)
Get batch of object IDs.
RedbKeySerializer
redb.Core.Utils
DeserializeObject(string, Type)
Deserialize _array_index text value to key (non-generic version)
SerializeObject(object, Type)
Serialize key to _array_index text value (non-generic version)
RedbList
redb.Core.Models.Entities
AddItem(string, IRedbObject, string?)
Add item with linked object (Aggregate Root pattern).
CreateItem(string, IRedbObject, string?)
Create item with linked object.
RedbListItem
redb.Core.Models.Entities
ForList(IRedbList, string?, string?, IRedbObject)
Create ListItem with linked object.
IdObject
Linked object identifier (optional).
IsObjectLoaderAvailable
Check if global loader is available.
IsObjectReference
Check if item is object reference.
Object
Linked object with lazy loading.
RedbListItem(IRedbList, string?, string?, IRedbObject)
Constructor for creating item with linked object.
SetGlobalObjectLoader(Func<long, Task<IRedbObject?>>)
Set global object loader for all ListItems.
RedbObject
redb.Core.Models.Entities
RedbObject<TProps>
redb.Core.Models.Entities
explicit operator TProps(RedbObject<TProps>)
Explicit cast to TProps.
RedbObject()
Default constructor for deserialization.
RedbObject(TProps)
Constructor with properties.
RedbObjectExtensions
redb.Core.Extensions
CreateHierarchicalPath(IEnumerable<IRedbObject>, string)
Creates hierarchical path string for object
GetAge(IRedbObject, DateTime?)
Gets object age (time since creation)
GetChildrenCountAsync<T>(IRedbObject, ITreeProvider)
Gets count of object children
GetDebugInfo(IRedbObject)
Gets brief object information for debugging
GetDescendantsCountAsync<T>(IRedbObject, ITreeProvider, int?)
Gets count of all object descendants
GetDisplayName(IRedbObject, bool)
Gets object display name with fallback logic
GetTimeSinceLastModification(IRedbObject, DateTime?)
Gets time since last object modification
GetTreeLevelAsync<T>(IRedbObject, ITreeProvider)
OPTIMIZED version: Gets object level in tree (root = 0)
HasStarted(IRedbObject, DateTime?)
Checks if object has started its validity
IsActiveAt(IRedbObject, DateTime?)
Checks if object is active by timestamps
IsAncestorOfAsync<T>(IRedbObject, IRedbObject, ITreeProvider)
Checks if object is an ancestor of the specified descendant
IsDescendantOfAsync<T>(IRedbObject, IRedbObject, ITreeProvider)
OPTIMIZED version: Checks if object is descendant of specified parent
IsExpired(IRedbObject, DateTime?)
Checks if object validity has expired
IsLeafAsync<T>(IRedbObject, ITreeProvider)
Checks if object is a tree leaf (without children)
RedbObjectFactory
redb.Core.Models
CreateBatchChildAsync<TProps>(IRedbObject, IEnumerable<TProps>, bool)
Batch creation of child objects with cache preloading
CreateBatchChildAsync<TProps>(IRedbObject, IEnumerable<TProps>)
Batch creation of child objects with cache preloading
CreateChildAsync<TProps>(IRedbObject, TProps, bool)
Create a new object as a child of an existing parent
CreateChildAsync<TProps>(IRedbObject, TProps)
Create a new object as a child of an existing parent
CreateCopyAsync<TProps>(IRedbObject<TProps>, TProps)
Create copy of existing object with new properties
CreateObject(string?)
Create non-generic RedbObject with basic metadata.
RedbObjectRow
redb.Core.Models.Entities
RedbProjectedQueryable<TProps, TResult>
redb.Core.Query
RedbQueryable<TProps>
redb.Core.Query
AggregateAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Flexible aggregation - choose what to aggregate via Agg.Sum/Avg/Min/Max/Count
AggregateRedbAsync<TResult>(Expression<Func<IRedbObject, TResult>>)
Flexible aggregation ONLY for base IRedbObject fields
AverageRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Average value of base IRedbObject field
DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
ExtractFieldPathRedb<TField>(Expression<Func<IRedbObject, TField>>)
Extracts base field path from IRedbObject expression
GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Grouping by base IRedbObject fields (id, scheme_id, parent_id, etc.)
MaxRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Maximum value of base IRedbObject field (ValueLong, Key, DateCreate, etc.)
MinRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Minimum value of base IRedbObject field (ValueLong, Key, DateCreate, etc.)
OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort descending by IRedbObject base fields.
OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
Select<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Project fields - return only selected properties.
SumRedbAsync<TField>(Expression<Func<IRedbObject, TField>>)
Sum of base IRedbObject field values (ValueLong, Key, etc.)
ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional descending sort by IRedbObject base fields.
ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional ascending sort by IRedbObject base fields.
WhereChildrenOf(IRedbObject)
Direct children of specified object.
WhereDescendantsOf(IRedbObject, int?)
All descendants of specified object (recursive).
WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>)
Filter by IRedbObject base field in list (WHERE _field IN (...)).
WhereRedb(Expression<Func<IRedbObject, bool>>)
Filter by base object fields (Id, Name, ParentId, etc.).
RedbQueryableExtensions
redb.Core.Query
ToAggregateSqlStringAsync<TProps, TResult>(IRedbQueryable<TProps>, Expression<Func<RedbObject<TProps>, TResult>>)
Returns the SQL query for aggregation (for debugging).
RedbService
redb.MSSql
CreateLazyPropsLoader(IRedbContext, ISchemeSyncProvider, IRedbObjectSerializer, RedbServiceConfiguration, string, IListProvider, ILogger?)
Create lazy props loader.
CreateObjectStorageProvider(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, IListProvider, ILogger?)
Create object storage provider.
CreateQueryableProvider(IRedbContext, IRedbObjectSerializer, ISchemeSyncProvider, IRedbSecurityContext, ILazyPropsLoader, RedbServiceConfiguration, string, ILogger?)
Create queryable provider.
CreateTreeProvider(IRedbContext, IObjectStorageProvider, IPermissionProvider, IRedbObjectSerializer, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, ILogger?)
Create tree provider.
GetObjectJsonSql()
Get SQL for loading object as JSON. Override in derived classes for DB-specific syntax.
RedbService
redb.Postgres
CreateLazyPropsLoader(IRedbContext, ISchemeSyncProvider, IRedbObjectSerializer, RedbServiceConfiguration, string, IListProvider, ILogger?)
Create lazy props loader.
CreateObjectStorageProvider(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, IListProvider, ILogger?)
Create object storage provider.
CreateQueryableProvider(IRedbContext, IRedbObjectSerializer, ISchemeSyncProvider, IRedbSecurityContext, ILazyPropsLoader, RedbServiceConfiguration, string, ILogger?)
Create queryable provider.
CreateTreeProvider(IRedbContext, IObjectStorageProvider, IPermissionProvider, IRedbObjectSerializer, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, ILogger?)
Create tree provider.
GetObjectJsonSql()
Get SQL for loading object as JSON. Override in derived classes for DB-specific syntax.
RedbServiceBase
redb.Core
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>, IRedbUser)
BULK INSERT with explicit user: Create many new objects (does NOT check permissions).
AddNewObjectsAsync<TProps>(IEnumerable<IRedbObject<TProps>>)
BULK INSERT: Create many new objects in one operation (does NOT check permissions).
CanUserDeleteObject(IRedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(IRedbObject)
Check if current user can delete object.
CanUserDeleteObject(RedbObject, IRedbUser)
Check if user can delete object.
CanUserDeleteObject(RedbObject)
Check if current user can delete object.
CanUserEditObject(IRedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(IRedbObject)
Check if current user can edit object.
CanUserEditObject(RedbObject, IRedbUser)
Check if user can edit object.
CanUserEditObject(RedbObject)
Check if current user can edit object.
CanUserInsertScheme(RedbObject, IRedbUser)
Check if user can create objects in object's scheme.
CanUserSelectObject(IRedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(IRedbObject)
Check if current user can read object.
CanUserSelectObject(RedbObject, IRedbUser)
Check if user can read object.
CanUserSelectObject(RedbObject)
Check if current user can read object.
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser)
Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject)
Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
CreateLazyPropsLoader(IRedbContext, ISchemeSyncProvider, IRedbObjectSerializer, RedbServiceConfiguration, string, IListProvider, ILogger?)
Create lazy props loader.
CreateObjectStorageProvider(IRedbContext, IRedbObjectSerializer, IPermissionProvider, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, IListProvider, ILogger?)
Create object storage provider.
CreateQueryableProvider(IRedbContext, IRedbObjectSerializer, ISchemeSyncProvider, IRedbSecurityContext, ILazyPropsLoader, RedbServiceConfiguration, string, ILogger?)
Create queryable provider.
CreateTreeProvider(IRedbContext, IObjectStorageProvider, IPermissionProvider, IRedbObjectSerializer, IRedbSecurityContext, ISchemeSyncProvider, RedbServiceConfiguration, ILogger?)
Create tree provider.
DeleteAsync(IEnumerable<IRedbObject>, IRedbUser)
Bulk delete objects by interface with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IEnumerable<IRedbObject>)
Bulk delete objects by interface (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IRedbObject, IRedbUser)
Delete object with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteAsync(IRedbObject)
Delete object (uses _securityContext and config.DefaultCheckPermissionsOnDelete).
DeleteSubtreeAsync(IRedbObject, IRedbUser)
Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteSubtreeAsync(IRedbObject)
Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
EnsureObjectSchemeAsync(string)
Get or create scheme for Object type (without Props).
GetChildrenAsync<TProps>(IRedbObject, IRedbUser)
Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetChildrenAsync<TProps>(IRedbObject)
Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, int?)
Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?)
Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetEffectivePermissionsAsync(IRedbUser, IRedbObject)
Get effective user permissions for object (including inheritance and roles).
GetEffectivePermissionsBatchAsync(IRedbUser, IRedbObject[])
Get effective user permissions for multiple objects (batch).
GetObjectJsonSql()
Get SQL for loading object as JSON. Override in derived classes for DB-specific syntax.
GetObjectSchemeAsync(string)
Get scheme for Object type by name.
GetPathToRootAsync<TProps>(IRedbObject, IRedbUser)
Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetPathToRootAsync<TProps>(IRedbObject)
Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetPermissionsByObjectAsync(IRedbObject)
Get permissions for object.
GetPolymorphicChildrenAsync(IRedbObject, IRedbUser)
Get all direct children of object regardless of their schemes with explicit user.
GetPolymorphicChildrenAsync(IRedbObject)
Get all direct children of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, int?)
Get all polymorphic descendants of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?)
Get all polymorphic descendants of object with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser)
Get polymorphic path from object to root with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject)
Get polymorphic path from object to root - objects can be of different schemes.
GetReadableObjectIds()
Get IDs of objects readable by current user.
GetReadableObjectIds(IRedbUser)
Get IDs of objects readable by user.
GrantPermissionAsync(IRedbRole, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to role.
GrantPermissionAsync(IRedbUser, IRedbObject, PermissionAction, IRedbUser?)
Grant permission to user.
LoadAsync<TProps>(IRedbObject, int, bool?)
Load object from EAV (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
LoadAsync<TProps>(IRedbObject, IRedbUser, int, bool?)
Load object from EAV with explicit user (uses config.DefaultCheckPermissionsOnLoad).
LoadPolymorphicTreeAsync(IRedbObject, int?)
Load polymorphic tree/subtree - supports objects of different schemes in one tree.
LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?)
Load polymorphic tree/subtree with explicit user.
LoadTreeAsync<TProps>(IRedbObject, int?)
Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?)
Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser)
Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
MoveObjectAsync(IRedbObject, IRedbObject?)
Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
RevokePermissionAsync(IRedbRole, IRedbObject, IRedbUser?)
Revoke permission from role.
RevokePermissionAsync(IRedbUser, IRedbObject, IRedbUser?)
Revoke permission from user.
SaveAsync(IEnumerable<IRedbObject>, IRedbUser)
Bulk save of polymorphic objects with explicit user (uses config).
SaveAsync(IEnumerable<IRedbObject>)
Bulk save of polymorphic objects (uses _securityContext and config).
SaveAsync(IRedbObject, IRedbUser)
Save object to EAV with explicit user. Determines type internally.
SaveAsync(IRedbObject)
Save object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
SaveAsync<TProps>(IRedbObject<TProps>, IRedbUser)
Save generic object to EAV with explicit user (uses config.DefaultCheckPermissionsOnSave).
SaveAsync<TProps>(IRedbObject<TProps>)
Save generic object to EAV (uses _securityContext and config.DefaultCheckPermissionsOnSave).
SoftDeleteAsync(IEnumerable<IRedbObject>, IRedbUser, long?)
Mark objects for soft-deletion with explicit user.
SoftDeleteAsync(IEnumerable<IRedbObject>, long?)
Mark objects for soft-deletion (uses _securityContext).
TreeQuery<TProps>(IEnumerable<IRedbObject>, int?)
Create tree query limited to subtrees of object list (synchronous).
TreeQuery<TProps>(IEnumerable<IRedbObject>, IRedbUser, int?)
Create tree query limited to subtrees of object list with specified user (synchronous).
TreeQuery<TProps>(IRedbObject?, int?)
Create tree query limited to subtree (synchronous).
TreeQuery<TProps>(IRedbObject?, IRedbUser, int?)
Create tree query limited to subtree with specified user (synchronous).
RedbServiceConfiguration
redb.Core.Models.Configuration
MissingObjectStrategy
Strategy for handling non-existent objects on UPDATE.
ThrowOnObjectNotFound
Throw exception if object not found in LoadAsync.
RedbServiceConfigurationBuilder
redb.Core.Models.Configuration
WithIdResetStrategy(ObjectIdResetStrategy)
Configure ID handling strategy after object deletion
WithMissingObjectStrategy(MissingObjectStrategy)
Configure strategy for handling non-existent objects on UPDATE
RedbTypeIds
redb.Core.Utils
Object
Object type - reference to another _objects record (redbObject)
RedbTypeMapping
redb.Core.Utils
GetObjectValueColumn(long)
Get _objects column name for RedbPrimitive value storage
RedbValue
redb.Core.Models.Entities
RedbWindowedQueryable<TProps>
redb.Core.Query.Window
SelectAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Projection with window functions.
ToSqlStringAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Returns SQL string for debugging.
SchemeSyncProviderBase
redb.Core.Providers.Base
EnsureObjectSchemeAsync(string)
Get or create scheme for Object type (without Props).
GetObjectSchemeAsync(string)
Get scheme for Object type by name.
Sql
redb.Core.Query
Function<TResult>(string, params object?[])
Call custom SQL function.
SqlBulkOperations
redb.MSSql.Data
BulkDeleteObjectsAsync(IEnumerable<long>)
Bulk delete objects by IDs.
BulkDeleteValuesByObjectIdsAsync(IEnumerable<long>)
Bulk delete values by object IDs.
BulkInsertObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk insert objects using SqlBulkCopy.
BulkUpdateObjectsAsync(IEnumerable<RedbObjectRow>)
Bulk update objects using MERGE statement.
SqlParameterCollector
redb.Core.Pro.Query
AddParameter(object?)
Adds parameter and returns placeholder via dialect.
AddParameterWithOffset(object?, int)
Adds parameter with specified index offset.
SqlParameterCollectorBase
redb.Core.Query.Parameters
AddParameter(object?)
Adds a parameter and returns the dialect-specific placeholder.
AddParameterWithOffset(object?, int)
Adds a parameter with a custom index offset.
FormatForComment(object?)
Formats value for debug comment.
NormalizeValue(object?)
Normalizes value before adding to parameters.
SqlRedbConnection
redb.MSSql.Data
ExecuteAsync(string, params object[])
Execute SQL command (INSERT, UPDATE, DELETE).
ExecuteJsonAsync(string, params object[])
Execute SQL returning JSON (for MSSQL functions returning JSON).
ExecuteJsonListAsync(string, params object[])
Execute SQL returning multiple JSON rows.
ExecuteScalarAsync<T>(string, params object[])
Execute SQL query and return scalar value.
QueryAsync<T>(string, params object[])
Execute SQL query and map results to list of objects.
QueryFirstOrDefaultAsync<T>(string, params object[])
Execute SQL query and return first result.
QueryScalarListAsync<T>(string, params object[])
Execute SQL query and return list of scalar values (first column only).
TreeCollection
redb.Core.Models.Collections
Add(ITreeRedbObject)
Adds node to collection and automatically builds hierarchy
AddRange(IEnumerable<ITreeRedbObject>)
Adds range of nodes
FindNodes(Func<ITreeRedbObject, bool>)
Finds nodes by predicate
TreeCollection<TProps>
redb.Core.Models.Collections
Add(ITreeRedbObject<TProps>)
Adds typed node to collection
AddRange(IEnumerable<ITreeRedbObject<TProps>>)
Adds range of typed nodes
FindNodes(Func<ITreeRedbObject<TProps>, bool>)
Finds typed nodes by predicate
TreeExtensions
redb.Core.Utils
BreadthFirstTraversal(ITreeRedbObject)
Breadth-First Search tree traversal for polymorphic trees.
BreadthFirstTraversal<TProps>(ITreeRedbObject<TProps>)
Breadth-First Search tree traversal for typed trees.
DepthFirstTraversal(ITreeRedbObject)
Depth-First Search tree traversal - pre-order for polymorphic trees.
DepthFirstTraversal<TProps>(ITreeRedbObject<TProps>)
Depth-First Search tree traversal - pre-order for typed trees.
FindById(ITreeRedbObject, long)
Find node by ID in polymorphic tree.
FindById<TProps>(ITreeRedbObject<TProps>, long)
Find node by ID in typed tree.
FindNodes(ITreeRedbObject, Func<ITreeRedbObject, bool>)
Find nodes by predicate in polymorphic tree.
FindNodes<TProps>(ITreeRedbObject<TProps>, Func<ITreeRedbObject<TProps>, bool>)
Find nodes by predicate in typed tree.
FlattenWithLevels(ITreeRedbObject)
Flattens polymorphic tree to list with level indicators.
FlattenWithLevels<TProps>(ITreeRedbObject<TProps>)
Flattens typed tree to list with level indicators.
GetLeaves(ITreeRedbObject)
Gets all leaf nodes of polymorphic tree.
GetLeaves<TProps>(ITreeRedbObject<TProps>)
Gets all leaf nodes of typed tree.
GetMaterializedPath(ITreeRedbObject, string)
Builds materialized path for polymorphic node.
GetMaterializedPath<TProps>(ITreeRedbObject<TProps>, string)
Builds materialized path for typed node.
GetNodesAtLevel(ITreeRedbObject, int)
Gets all nodes at specific level in polymorphic tree.
GetNodesAtLevel<TProps>(ITreeRedbObject<TProps>, int)
Gets all nodes at specific level in typed tree.
IsBalanced(ITreeRedbObject)
Checks if polymorphic tree is balanced (subtree depth difference does not exceed 1).
IsBalanced<TProps>(ITreeRedbObject<TProps>)
Checks if typed tree is balanced (subtree depth difference does not exceed 1).
PostOrderTraversal(ITreeRedbObject)
Depth-First Search tree traversal - post-order for polymorphic trees.
PostOrderTraversal<TProps>(ITreeRedbObject<TProps>)
Depth-First Search tree traversal - post-order for typed trees.
TreeFilter
redb.Core.Query.Base
TreeObjectConverter
redb.Core.Utils
BuildParentRelationships(IEnumerable<ITreeRedbObject>)
Build Parent relationships for a collection of polymorphic tree objects.
BuildParentRelationships<TProps>(IEnumerable<TreeRedbObject<TProps>>)
Build Parent relationships for a collection of tree objects.
ToTreeObject<TProps>(IRedbObject)
Convert IRedbObject to TreeRedbObject (creates new instance with Props = new TProps if types don't m...
ToTreeObject<TProps>(RedbObject<TProps>)
Convert RedbObject to TreeRedbObject preserving all properties.
ToTreeObjectDynamic(IRedbObject)
Convert IRedbObject to ITreeRedbObject dynamically preserving actual Props type.
TreeProjectedQueryable<TProps, TResult>
redb.Core.Query
TreeProviderBase
redb.Core.Providers.Base
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser)
Create child object with explicit user (uses config.DefaultCheckPermissionsOnSave).
CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject)
Create child object (uses _securityContext and config.DefaultCheckPermissionsOnSave).
DeleteSubtreeAsync(IRedbObject, IRedbUser)
Delete object subtree recursively with explicit user (uses config.DefaultCheckPermissionsOnDelete).
DeleteSubtreeAsync(IRedbObject)
Delete object subtree recursively (uses _securityContext and config.DefaultCheckPermissionsOnDelete)...
GetChildrenAsync<TProps>(IRedbObject, IRedbUser)
Get direct children of object with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetChildrenAsync<TProps>(IRedbObject)
Get direct children of object (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, int?)
Get all object descendants (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?)
Get all object descendants with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetPathToRootAsync<TProps>(IRedbObject, IRedbUser)
Get path from object to root with explicit user (uses config.DefaultCheckPermissionsOnLoad).
GetPathToRootAsync<TProps>(IRedbObject)
Get path from object to root (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
GetPolymorphicChildrenAsync(IRedbObject, IRedbUser)
Get all direct children of object regardless of their schemes with explicit user.
GetPolymorphicChildrenAsync(IRedbObject)
Get all direct children of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, int?)
Get all polymorphic descendants of object regardless of their schemes.
GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?)
Get all polymorphic descendants of object with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser)
Get polymorphic path from object to root with explicit user.
GetPolymorphicPathToRootAsync(IRedbObject)
Get polymorphic path from object to root - objects can be of different schemes.
LoadPolymorphicTreeAsync(IRedbObject, int?)
Load polymorphic tree/subtree - supports objects of different schemes in one tree.
LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?)
Load polymorphic tree/subtree with explicit user.
LoadTreeAsync<TProps>(IRedbObject, int?)
Load tree/subtree (uses _securityContext and config.DefaultCheckPermissionsOnLoad).
LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?)
Load tree/subtree with explicit user (uses config.DefaultCheckPermissionsOnLoad).
MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser)
Move object in tree with explicit user (uses config.DefaultCheckPermissionsOnSave).
MoveObjectAsync(IRedbObject, IRedbObject?)
Move object in tree (uses _securityContext and config.DefaultCheckPermissionsOnSave).
TreeProviderBase.TreeRedbObjectDynamic
redb.Core.Providers.Base.TreeProviderBase
TreeQueryableBase<TProps>
redb.Core.Query.Base
DistinctByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
DISTINCT ON (base_field) - one object per unique IRedbObject base field value.
GroupByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Override GroupByRedb to respect tree context.
OrderByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort descending by IRedbObject base fields.
OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort ascending by IRedbObject base fields (id, name, date_create, etc.).
ThenByDescendingRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional descending sort by IRedbObject base fields.
ThenByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Additional ascending sort by IRedbObject base fields.
WhereChildrenOf(IRedbObject)
Direct children of specified object.
WhereDescendantsOf(IRedbObject, int?)
All descendants of specified object (recursive).
WhereInRedb<TValue>(Expression<Func<IRedbObject, TValue>>, IEnumerable<TValue>)
Filter by IRedbObject base field in list (WHERE _field IN (...)).
WhereRedb(Expression<Func<IRedbObject, bool>>)
Filter by base object fields (Id, Name, ParentId, etc.).
TreeQueryContext<TProps>
redb.Core.Query.Base
TreeQueryProviderBase
redb.Core.Query.Base
LoadObjectsByIdsAsync(List<long>, int?)
Load full polymorphic objects by ID list via get_object_json function.
LoadObjectsByIdsAsync<TProps>(List<long>, int?)
Load full objects by ID list via get_object_json function
TreeRedbObject
redb.Core.Models.Entities
IsAncestorOf(ITreeRedbObject)
Checks if current node is ancestor of specified node
IsDescendantOf(ITreeRedbObject)
Checks if current node is descendant of specified node
TreeRedbObject<TProps>
redb.Core.Models.Entities
IsAncestorOf(ITreeRedbObject)
Checks if current node is ancestor of specified node
IsDescendantOf(ITreeRedbObject)
Checks if current node is descendant of specified node
TreeWindowedQueryable<TProps>
redb.Core.Query.Window
SelectAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Execute window query with tree context and materialize results.
ToSqlStringAsync<TResult>(Expression<Func<RedbObject<TProps>, TResult>>)
Returns SQL string for debugging.
UserCacheStats
redb.Core.Caching
ObjectCount
Number of user objects in cache.
UserPermissionResult
redb.Core.Models.Permissions
UserPermissionSet
redb.Core.Models.Permissions
AddObjectPermission(long, PermissionFlags)
Add permission on object
GetPermissionsForObject(long, long)
Get permissions for object considering hierarchy
ObjectPermissions
Permissions on specific objects
UserProviderBase
redb.Core.Providers.Base
BuildUserSearchSql(UserSearchCriteria?, out object[])
Build SQL for user search. Override in derived class for DB-specific syntax.
ValueRecord
redb.Export.Models
ValueTreeBuilder
redb.Core.Pro.ChangeTracking
VUserPermission
redb.Core.Models.Permissions
WindowSpec<TProps>
redb.Core.Query.Window
OrderByDescRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort within window by IRedbObject base field (descending).
OrderByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Sort within window by IRedbObject base field (ascending).
PartitionByRedb<TKey>(Expression<Func<IRedbObject, TKey>>)
Partition by IRedbObject base field (SchemeId, OwnerId, etc.).