Class RepositoryCollectionBase<TEntity, TKey>
public abstract class RepositoryCollectionBase<TEntity, TKey> : RepositoryCollectionBase, IRepositoryCollection<TEntity, TKey>, IReadOnlyRepositoryCollection<TEntity, TKey>, IRepositoryCollection, IReadOnlyRepositoryCollection where TEntity : EntityBase<TKey>
Type Parameters
TEntityTKey
- Inheritance
-
RepositoryCollectionBase<TEntity, TKey>
- Implements
-
IRepositoryCollection<TEntity, TKey>IReadOnlyRepositoryCollection<TEntity, TKey>
- Derived
- Inherited Members
Constructors
RepositoryCollectionBase(IMongoDbServiceFactory, ILogger, DatabaseContext)
protected RepositoryCollectionBase(IMongoDbServiceFactory mongoDbServiceFactory, ILogger logger, DatabaseContext databaseContext = null)
Parameters
mongoDbServiceFactoryIMongoDbServiceFactoryloggerILoggerdatabaseContextDatabaseContext
Fields
_databaseContext
protected readonly DatabaseContext _databaseContext
Field Value
_logger
protected readonly ILogger _logger
Field Value
_mongoDbService
protected readonly IMongoDbService _mongoDbService
Field Value
_mongoDbServiceFactory
protected readonly IMongoDbServiceFactory _mongoDbServiceFactory
Field Value
Properties
AutoClean
public virtual bool AutoClean { get; }
Property Value
CleanOnStartup
public virtual bool CleanOnStartup { get; }
Property Value
CollectionName
public override string CollectionName { get; }
Property Value
ConfigurationName
public override string ConfigurationName { get; }
Property Value
CoreIndices
public virtual IEnumerable<CreateIndexModel<TEntity>> CoreIndices { get; }
Property Value
- IEnumerable<CreateIndexModel<TEntity>>
CreateCollectionStrategy
public virtual CreateStrategy CreateCollectionStrategy { get; }
Property Value
DatabasePart
public virtual string DatabasePart { get; }
Property Value
FetchSize
public virtual int? FetchSize { get; }
Property Value
- int?
Indices
public virtual IEnumerable<CreateIndexModel<TEntity>> Indices { get; }
Property Value
- IEnumerable<CreateIndexModel<TEntity>>
ProtectedCollectionName
protected string ProtectedCollectionName { get; }
Property Value
Types
public virtual IEnumerable<Type> Types { get; }
Property Value
Methods
AddAsync(TEntity, IClientSessionHandle)
public abstract Task AddAsync(TEntity entity, IClientSessionHandle session = null)
Parameters
entityTEntitysessionIClientSessionHandle
Returns
AddManyAsync(IEnumerable<TEntity>, IClientSessionHandle)
public abstract Task AddManyAsync(IEnumerable<TEntity> entities, IClientSessionHandle session = null)
Parameters
entitiesIEnumerable<TEntity>sessionIClientSessionHandle
Returns
AvgAsync(Expression<Func<TEntity, decimal>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the average of a numeric field server-side.
public abstract Task<decimal> AvgAsync(Expression<Func<TEntity, decimal>> field, Expression<Func<TEntity, bool>> predicate = null, CancellationToken cancellationToken = default)
Parameters
fieldExpression<Func<TEntity, decimal>>predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
CountAsync(FilterDefinition<TEntity>, CancellationToken)
public abstract Task<long> CountAsync(FilterDefinition<TEntity> filter, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>cancellationTokenCancellationToken
Returns
CountAsync(Expression<Func<TEntity, bool>>, CancellationToken)
public abstract Task<long> CountAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
DeleteOneAsync(TKey, IClientSessionHandle)
public abstract Task<TEntity> DeleteOneAsync(TKey id, IClientSessionHandle session = null)
Parameters
idTKeysessionIClientSessionHandle
Returns
- Task<TEntity>
DropCollectionAsync()
public abstract Task DropCollectionAsync()
Returns
EstimatedCountAsync(CancellationToken)
Returns an estimated count of documents in the collection using metadata. This is very fast but may not be perfectly accurate.
public abstract Task<long> EstimatedCountAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
ExecuteAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<T>>, Operation, CancellationToken)
public abstract Task<T> ExecuteAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<T>> execute, Operation operation, CancellationToken cancellationToken)
Parameters
executeFunc<IMongoCollection<TEntity>, CancellationToken, Task<T>>operationOperationcancellationTokenCancellationToken
Returns
- Task<T>
Type Parameters
T
ExecuteAsync<T>(Func<IMongoCollection<TEntity>, Task<T>>, Operation)
public abstract Task<T> ExecuteAsync<T>(Func<IMongoCollection<TEntity>, Task<T>> execute, Operation operation)
Parameters
Returns
- Task<T>
Type Parameters
T
ExecuteManyAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<IAsyncCursor<T>>>, CancellationToken)
public abstract IAsyncEnumerable<T> ExecuteManyAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<IAsyncCursor<T>>> queryFactory, CancellationToken cancellationToken = default)
Parameters
queryFactoryFunc<IMongoCollection<TEntity>, CancellationToken, Task<IAsyncCursor<T>>>cancellationTokenCancellationToken
Returns
Type Parameters
T
GetAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public abstract IAsyncEnumerable<TEntity> GetAsync(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<TEntity>
GetAsync(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
public abstract IAsyncEnumerable<TEntity> GetAsync(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<TEntity>
GetDirtyAsync()
Entities that needs cleaning.
public abstract IAsyncEnumerable<TEntity> GetDirtyAsync()
Returns
- IAsyncEnumerable<TEntity>
GetFailedIndices()
Indices that have failed to be created or dropped on this collection within the current process, with the most recent error message captured for each. Empty when no failures have been recorded. In-process scope; cross-process persistence is a planned follow-up.
public abstract IReadOnlyList<IndexFailure> GetFailedIndices()
Returns
GetManyAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public abstract Task<Result<TEntity, TKey>> GetManyAsync(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
GetManyAsync(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
public abstract Task<Result<TEntity, TKey>> GetManyAsync(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
GetManyProjectionAsync<T>(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public abstract Task<Result<T>> GetManyProjectionAsync<T>(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
Type Parameters
T
GetManyProjectionAsync<T>(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
public abstract Task<Result<T>> GetManyProjectionAsync<T>(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
Type Parameters
T
GetOneAsync(FilterDefinition<TEntity>, OneOption<TEntity>, CancellationToken)
public abstract Task<TEntity> GetOneAsync(FilterDefinition<TEntity> filter, OneOption<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOneOption<TEntity>cancellationTokenCancellationToken
Returns
- Task<TEntity>
GetOneAsync(Expression<Func<TEntity, bool>>, OneOption<TEntity>, CancellationToken)
public abstract Task<TEntity> GetOneAsync(Expression<Func<TEntity, bool>> predicate, OneOption<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOneOption<TEntity>cancellationTokenCancellationToken
Returns
- Task<TEntity>
GetOneAsync(TKey, CancellationToken)
public abstract Task<TEntity> GetOneAsync(TKey id, CancellationToken cancellationToken = default)
Parameters
idTKeycancellationTokenCancellationToken
Returns
- Task<TEntity>
GetPageAsync(int, PagePosition, Expression<Func<TEntity, bool>>, Expression<Func<TEntity, object>>, bool, CancellationToken)
Keyset (seek-based) pagination. Cost is O(log N) per page regardless of how deep the page sits —
no skip penalty on deep pages or "jump to last." Single-column sort only; total count is intentionally
not part of the result and should be obtained via CountAsync(predicate) separately.
public abstract Task<CursorPage<TEntity>> GetPageAsync(int pageSize, PagePosition position, Expression<Func<TEntity, bool>> predicate = null, Expression<Func<TEntity, object>> sortBy = null, bool ascending = true, CancellationToken cancellationToken = default)
Parameters
pageSizeintpositionPagePositionpredicateExpression<Func<TEntity, bool>>sortByExpression<Func<TEntity, object>>ascendingboolcancellationTokenCancellationToken
Returns
- Task<CursorPage<TEntity>>
GetPageProjectionAsync<T>(int, PagePosition, Expression<Func<TEntity, T>>, Expression<Func<TEntity, bool>>, Expression<Func<TEntity, object>>, bool, CancellationToken)
Projection variant of GetPageAsync(int, PagePosition, Expression<Func<TEntity, bool>>, Expression<Func<TEntity, object>>, bool, CancellationToken) — returns the projected shape T instead of the entity.
public abstract Task<CursorPage<T>> GetPageProjectionAsync<T>(int pageSize, PagePosition position, Expression<Func<TEntity, T>> projection, Expression<Func<TEntity, bool>> predicate = null, Expression<Func<TEntity, object>> sortBy = null, bool ascending = true, CancellationToken cancellationToken = default)
Parameters
pageSizeintpositionPagePositionprojectionExpression<Func<TEntity, T>>predicateExpression<Func<TEntity, bool>>sortByExpression<Func<TEntity, object>>ascendingboolcancellationTokenCancellationToken
Returns
- Task<CursorPage<T>>
Type Parameters
T
GetProjectionAsync<T>(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public abstract IAsyncEnumerable<T> GetProjectionAsync<T>(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
Type Parameters
T
GetProjectionAsync<T>(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
public abstract IAsyncEnumerable<T> GetProjectionAsync<T>(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
Type Parameters
T
GetSizeAsync(CancellationToken)
public abstract Task<long> GetSizeAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
InitAsync(IMongoCollection<TEntity>)
protected virtual Task InitAsync(IMongoCollection<TEntity> collection)
Parameters
collectionIMongoCollection<TEntity>
Returns
MaxAsync<TField>(Expression<Func<TEntity, TField>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the maximum value of a field server-side.
public abstract Task<TField> MaxAsync<TField>(Expression<Func<TEntity, TField>> field, Expression<Func<TEntity, bool>> predicate = null, CancellationToken cancellationToken = default)
Parameters
fieldExpression<Func<TEntity, TField>>predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
- Task<TField>
Type Parameters
TField
MinAsync<TField>(Expression<Func<TEntity, TField>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the minimum value of a field server-side.
public abstract Task<TField> MinAsync<TField>(Expression<Func<TEntity, TField>> field, Expression<Func<TEntity, bool>> predicate = null, CancellationToken cancellationToken = default)
Parameters
fieldExpression<Func<TEntity, TField>>predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
- Task<TField>
Type Parameters
TField
SumAsync(Expression<Func<TEntity, decimal>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the sum of a numeric field server-side.
public abstract Task<decimal> SumAsync(Expression<Func<TEntity, decimal>> field, Expression<Func<TEntity, bool>> predicate = null, CancellationToken cancellationToken = default)
Parameters
fieldExpression<Func<TEntity, decimal>>predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
TryAddAsync(TEntity, IClientSessionHandle)
public abstract Task<bool> TryAddAsync(TEntity entity, IClientSessionHandle session = null)
Parameters
entityTEntitysessionIClientSessionHandle