Class ProTreeProviderBase
Pro base class for TreeProvider with PVT instead of get_object_json.
Database-agnostic: SQL is provided via dialect.
public abstract class ProTreeProviderBase : TreeProviderBase, ITreeProvider
Inheritance
Implements
Derived
Inherited Members
TreeProviderBase.Cache,TreeProviderBase.ConvertToPolymorphicTreeObjectWithProps(IRedbObject),TreeProviderBase.ConvertToTreeObject<TProps>(RedbObject<TProps>),TreeProviderBase.CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject),TreeProviderBase.CreateChildAsync<TProps>(TreeRedbObject<TProps>, IRedbObject, IRedbUser),TreeProviderBase.CreateChildWithUserAsync<TProps>(TreeRedbObject<TProps>, long, long?, bool),TreeProviderBase.DeleteSubtreeAsync(IRedbObject),TreeProviderBase.DeleteSubtreeAsync(IRedbObject, IRedbUser),TreeProviderBase.DeleteSubtreeWithUserAsync(long, IRedbUser),TreeProviderBase.GetChildrenAsync<TProps>(IRedbObject),TreeProviderBase.GetChildrenAsync<TProps>(IRedbObject, IRedbUser),TreeProviderBase.GetChildrenWithUserAsync<TProps>(long, long?, bool),TreeProviderBase.GetDescendantsAsync<TProps>(IRedbObject, int?),TreeProviderBase.GetDescendantsAsync<TProps>(IRedbObject, IRedbUser, int?),TreeProviderBase.GetDescendantsWithUserAsync<TProps>(long, int, long?, bool),TreeProviderBase.GetPathToRootAsync<TProps>(IRedbObject),TreeProviderBase.GetPathToRootAsync<TProps>(IRedbObject, IRedbUser),TreeProviderBase.GetPathToRootWithUserAsync<TProps>(long, long?, bool),TreeProviderBase.GetPolymorphicChildrenAsync(IRedbObject),TreeProviderBase.GetPolymorphicChildrenAsync(IRedbObject, IRedbUser),TreeProviderBase.GetPolymorphicChildrenWithUserAsync(long, long?, bool),TreeProviderBase.GetPolymorphicDescendantsAsync(IRedbObject, int?),TreeProviderBase.GetPolymorphicDescendantsAsync(IRedbObject, IRedbUser, int?),TreeProviderBase.GetPolymorphicDescendantsWithUserAsync(long, int, long?, bool),TreeProviderBase.GetPolymorphicPathToRootAsync(IRedbObject),TreeProviderBase.GetPolymorphicPathToRootAsync(IRedbObject, IRedbUser),TreeProviderBase.GetPolymorphicPathToRootWithUserAsync(long, long?, bool),TreeProviderBase.InitializeTypeRegistryAsync(),TreeProviderBase.LoadDynamicObjectAsync(long, IRedbUser?),TreeProviderBase.LoadPolymorphicTreeAsync(IRedbObject, int?),TreeProviderBase.LoadPolymorphicTreeAsync(IRedbObject, IRedbUser, int?),TreeProviderBase.LoadPolymorphicTreeWithUserAsync(long, int, long?, bool),TreeProviderBase.LoadTreeAsync<TProps>(long, int?),TreeProviderBase.LoadTreeAsync<TProps>(long, IRedbUser, int?),TreeProviderBase.LoadTreeAsync<TProps>(IRedbObject, int?),TreeProviderBase.LoadTreeAsync<TProps>(IRedbObject, IRedbUser, int?),TreeProviderBase.LoadTreeWithUserAsync<TProps>(long, int, long?, bool),TreeProviderBase.MoveObjectAsync(IRedbObject, IRedbObject?),TreeProviderBase.MoveObjectAsync(IRedbObject, IRedbObject?, IRedbUser),TreeProviderBase.MoveObjectWithUserAsync(long, long?, long, bool)
Properties
ListProvider
ListProvider for loading list items during Props materialization.
protected IListProvider? ListProvider { get; }
Methods
CreateProLazyPropsLoader()
Creates ProLazyPropsLoader for PVT materialization.
protected abstract ILazyPropsLoader CreateProLazyPropsLoader()
GetChildrenWithUserAsync<TProps>(long, long?, bool)
Pro: PVT instead of get_object_json for typed children.
protected override Task<IEnumerable<TreeRedbObject<TProps>>> GetChildrenWithUserAsync<TProps>(long parentId, long? userId = null, bool checkPermissions = false) where TProps : class, new()
GetPolymorphicChildrenWithUserAsync(long, long?, bool)
Pro: PVT instead of get_object_json for polymorphic children.
protected override Task<IEnumerable<ITreeRedbObject>> GetPolymorphicChildrenWithUserAsync(long parentId, long? userId = null, bool checkPermissions = false)
LoadChildrenBaseAsync(long)
SQL: Load all children (base fields only).
protected abstract Task<List<RedbObjectRow>> LoadChildrenBaseAsync(long parentId)
LoadChildrenBySchemeBaseAsync(long, long)
SQL: Load children by scheme (base fields only).
protected abstract Task<List<RedbObjectRow>> LoadChildrenBySchemeBaseAsync(long parentId, long schemeId)
LoadDynamicObjectAsync(long, IRedbUser?)
Pro: PVT instead of get_object_json for dynamic object loading.
protected override Task<IRedbObject> LoadDynamicObjectAsync(long objectId, IRedbUser? user = null)
LoadObjectByIdAsync(long)
SQL: Load object by ID (base fields only).
protected abstract Task<RedbObjectRow?> LoadObjectByIdAsync(long objectId)
MapRowToRedbObject<TProps>(RedbObjectRow)
Map RedbObjectRow to typed RedbObject.
protected static RedbObject<TProps> MapRowToRedbObject<TProps>(RedbObjectRow row) where TProps : class, new()