Class DiskRepositoryCollectionBase<TEntity, TKey>
public abstract class DiskRepositoryCollectionBase<TEntity, TKey> : RepositoryCollectionBase<TEntity, TKey>, IDiskRepositoryCollection<TEntity, TKey>, IRepositoryCollection<TEntity, TKey>, IReadOnlyRepositoryCollection<TEntity, TKey>, IRepositoryCollection, IReadOnlyRepositoryCollection where TEntity : EntityBase<TKey>
Type Parameters
TEntityTKey
- Inheritance
-
RepositoryCollectionBase<TEntity, TKey>DiskRepositoryCollectionBase<TEntity, TKey>
- Implements
-
IDiskRepositoryCollection<TEntity, TKey>IRepositoryCollection<TEntity, TKey>IReadOnlyRepositoryCollection<TEntity, TKey>
- Derived
- Inherited Members
Constructors
DiskRepositoryCollectionBase(IMongoDbServiceFactory, ILogger)
Override this constructor for static collections.
protected DiskRepositoryCollectionBase(IMongoDbServiceFactory mongoDbServiceFactory, ILogger logger = null)
Parameters
mongoDbServiceFactoryIMongoDbServiceFactoryloggerILogger
DiskRepositoryCollectionBase(IMongoDbServiceFactory, ILogger, DatabaseContext)
Use this constructor for dynamic collections together with ICollectionProvider.
protected DiskRepositoryCollectionBase(IMongoDbServiceFactory mongoDbServiceFactory, ILogger logger, DatabaseContext databaseContext)
Parameters
mongoDbServiceFactoryIMongoDbServiceFactoryloggerILoggerdatabaseContextDatabaseContext
Properties
FetchSize
public override int? FetchSize { get; }
Property Value
- int?
Methods
AddAsync(TEntity, IClientSessionHandle)
public override Task AddAsync(TEntity entity, IClientSessionHandle session = null)
Parameters
entityTEntitysessionIClientSessionHandle
Returns
AddManyAsync(IEnumerable<TEntity>, IClientSessionHandle)
public override Task AddManyAsync(IEnumerable<TEntity> entities, IClientSessionHandle session = null)
Parameters
entitiesIEnumerable<TEntity>sessionIClientSessionHandle
Returns
AddOrReplaceAsync(TEntity, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> AddOrReplaceAsync(TEntity entity, IClientSessionHandle session = null)
Parameters
entityTEntitysessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>
AvgAsync(Expression<Func<TEntity, decimal>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the average of a numeric field server-side.
public override 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 override Task<long> CountAsync(FilterDefinition<TEntity> filter, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>cancellationTokenCancellationToken
Returns
CountAsync(Expression<Func<TEntity, bool>>, CancellationToken)
public override Task<long> CountAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>cancellationTokenCancellationToken
Returns
DeleteManyAsync(FilterDefinition<TEntity>, IClientSessionHandle)
public Task<long> DeleteManyAsync(FilterDefinition<TEntity> filter, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>sessionIClientSessionHandle
Returns
DeleteManyAsync(Expression<Func<TEntity, bool>>, IClientSessionHandle)
public Task<long> DeleteManyAsync(Expression<Func<TEntity, bool>> predicate = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>sessionIClientSessionHandle
Returns
DeleteOneAsync(FilterDefinition<TEntity>, OneOption<TEntity>, IClientSessionHandle)
public Task<TEntity> DeleteOneAsync(FilterDefinition<TEntity> filter, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>optionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<TEntity>
DeleteOneAsync(Expression<Func<TEntity, bool>>, OneOption<TEntity>, IClientSessionHandle)
public Task<TEntity> DeleteOneAsync(Expression<Func<TEntity, bool>> predicate, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<TEntity>
DeleteOneAsync(TKey, IClientSessionHandle)
public override Task<TEntity> DeleteOneAsync(TKey id, IClientSessionHandle session = null)
Parameters
idTKeysessionIClientSessionHandle
Returns
- Task<TEntity>
DropCollectionAsync()
public override Task DropCollectionAsync()
Returns
DropEmptyAsync(IMongoCollection<TEntity>)
protected virtual Task DropEmptyAsync(IMongoCollection<TEntity> collection)
Parameters
collectionIMongoCollection<TEntity>
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 override Task<long> EstimatedCountAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
ExecuteAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<T>>, Operation, CancellationToken)
public override 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 override Task<T> ExecuteAsync<T>(Func<IMongoCollection<TEntity>, Task<T>> execute, Operation operation)
Parameters
Returns
- Task<T>
Type Parameters
T
ExecuteAsync<T>(string, Func<IMongoCollection<TEntity>, IClientSessionHandle, CancellationToken, Task<(T Data, int Count)>>, Operation, CancellationToken, FilterDefinition<TEntity>, IClientSessionHandle)
protected Task<T> ExecuteAsync<T>(string functionName, Func<IMongoCollection<TEntity>, IClientSessionHandle, CancellationToken, Task<(T Data, int Count)>> action, Operation operation, CancellationToken cancellationToken = default, FilterDefinition<TEntity> filter = null, IClientSessionHandle session = null)
Parameters
functionNamestringactionFunc<IMongoCollection<TEntity>, IClientSessionHandle, CancellationToken, Task<(T Data, int Count)>>operationOperationcancellationTokenCancellationTokenfilterFilterDefinition<TEntity>sessionIClientSessionHandle
Returns
- Task<T>
Type Parameters
T
ExecuteManyAsync<T>(Func<IMongoCollection<TEntity>, CancellationToken, Task<IAsyncCursor<T>>>, CancellationToken)
public override 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 override 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 override 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>
GetCollection()
[Obsolete("Use ExecuteAsync instead. This method will be deprecated.")]
public virtual IMongoCollection<TEntity> GetCollection()
Returns
- IMongoCollection<TEntity>
GetDirtyAsync()
Entities that needs cleaning.
public override 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 override IReadOnlyList<IndexFailure> GetFailedIndices()
Returns
GetManyAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public override 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 override 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 override 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 override 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 override 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 override 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 override 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 override 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 override 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 override 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 override 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 override Task<long> GetSizeAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
MaxAsync<TField>(Expression<Func<TEntity, TField>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the maximum value of a field server-side.
public override 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 override 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
QueryAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
[Obsolete("Use GetManyAsync instead. This method will be deprecated.")]
public virtual Task<Result<TEntity, TKey>> QueryAsync(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
QueryAsync(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
[Obsolete("Use GetManyAsync instead. This method will be deprecated.")]
public virtual Task<Result<TEntity, TKey>> QueryAsync(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
ReplaceOneAsync(TEntity, FilterDefinition<TEntity>, OneOption<TEntity>, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> ReplaceOneAsync(TEntity entity, FilterDefinition<TEntity> filter, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
entityTEntityfilterFilterDefinition<TEntity>optionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>
ReplaceOneAsync(TEntity, OneOption<TEntity>, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> ReplaceOneAsync(TEntity entity, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
entityTEntityoptionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>
SumAsync(Expression<Func<TEntity, decimal>>, Expression<Func<TEntity, bool>>, CancellationToken)
Computes the sum of a numeric field server-side.
public override 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 override Task<bool> TryAddAsync(TEntity entity, IClientSessionHandle session = null)
Parameters
entityTEntitysessionIClientSessionHandle
Returns
UpdateManyAsync(FilterDefinition<TEntity>, UpdateDefinition<TEntity>, IClientSessionHandle)
public Task<long> UpdateManyAsync(FilterDefinition<TEntity> filter, UpdateDefinition<TEntity> update, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>updateUpdateDefinition<TEntity>sessionIClientSessionHandle
Returns
UpdateManyAsync(Expression<Func<TEntity, bool>>, UpdateDefinition<TEntity>, IClientSessionHandle)
public virtual Task<long> UpdateManyAsync(Expression<Func<TEntity, bool>> predicate, UpdateDefinition<TEntity> update, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>updateUpdateDefinition<TEntity>sessionIClientSessionHandle
Returns
UpdateOneAsync(FilterDefinition<TEntity>, UpdateDefinition<TEntity>, OneOption<TEntity>, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> UpdateOneAsync(FilterDefinition<TEntity> filter, UpdateDefinition<TEntity> update, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>updateUpdateDefinition<TEntity>optionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>
UpdateOneAsync(Expression<Func<TEntity, bool>>, UpdateDefinition<TEntity>, OneOption<TEntity>, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> UpdateOneAsync(Expression<Func<TEntity, bool>> predicate, UpdateDefinition<TEntity> update, OneOption<TEntity> options = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>updateUpdateDefinition<TEntity>optionsOneOption<TEntity>sessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>
UpdateOneAsync(TKey, UpdateDefinition<TEntity>, IClientSessionHandle)
public virtual Task<EntityChangeResult<TEntity>> UpdateOneAsync(TKey id, UpdateDefinition<TEntity> update, IClientSessionHandle session = null)
Parameters
idTKeyupdateUpdateDefinition<TEntity>sessionIClientSessionHandle
Returns
- Task<EntityChangeResult<TEntity>>