Class LockableRepositoryCollectionBase<TEntity, TKey>
public class LockableRepositoryCollectionBase<TEntity, TKey> : RepositoryCollectionBase<TEntity, TKey>, ILockableRepositoryCollection<TEntity, TKey>, IRepositoryCollection<TEntity, TKey>, IReadOnlyRepositoryCollection<TEntity, TKey>, IRepositoryCollection, IReadOnlyRepositoryCollection where TEntity : LockableEntityBase<TKey>
Type Parameters
TEntityTKey
- Inheritance
-
RepositoryCollectionBase<TEntity, TKey>LockableRepositoryCollectionBase<TEntity, TKey>
- Implements
-
ILockableRepositoryCollection<TEntity, TKey>IRepositoryCollection<TEntity, TKey>IReadOnlyRepositoryCollection<TEntity, TKey>
- Derived
- Inherited Members
Constructors
LockableRepositoryCollectionBase(IMongoDbServiceFactory, ILogger, DatabaseContext)
protected LockableRepositoryCollectionBase(IMongoDbServiceFactory mongoDbServiceFactory, ILogger logger = null, DatabaseContext databaseContext = null)
Parameters
mongoDbServiceFactoryIMongoDbServiceFactoryloggerILoggerdatabaseContextDatabaseContext
Properties
AllowDelayedCommit
When true (default — resolved from AllowDelayedCommit),
a successful CommitAsync is permitted even when the lease's lock has expired,
provided no other writer has touched the document (LockKey still matches). The
LockKey atomicity check still drives the safety guarantee.
Override to false to pin a specific collection to strict-TTL semantics regardless
of the global option — CommitAsync will throw LockExpiredException
for any expired lease as it did before this feature.
protected virtual bool AllowDelayedCommit { get; }
Property Value
CoreIndices
public override IEnumerable<CreateIndexModel<TEntity>> CoreIndices { get; }
Property Value
- IEnumerable<CreateIndexModel<TEntity>>
DefaultTimeout
protected virtual TimeSpan DefaultTimeout { get; init; }
Property Value
ExceptionFilter
public Expression<Func<TEntity, bool>> ExceptionFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
LockedFilter
public Expression<Func<TEntity, bool>> LockedFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
LockedOrExceptionFilter
public Expression<Func<TEntity, bool>> LockedOrExceptionFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
RequireActor
protected virtual bool RequireActor { get; }
Property Value
UnlockedOrExpiredFilter
public Expression<Func<TEntity, bool>> UnlockedOrExpiredFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
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
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(DeleteMode, Expression<Func<TEntity, bool>>)
public Task<long> DeleteManyAsync(DeleteMode deleteMode, Expression<Func<TEntity, bool>> predicate = null)
Parameters
deleteModeDeleteModepredicateExpression<Func<TEntity, bool>>
Returns
DeleteManyUnlockedAsync(FilterDefinition<TEntity>)
public Task<long> DeleteManyUnlockedAsync(FilterDefinition<TEntity> filter)
Parameters
filterFilterDefinition<TEntity>
Returns
DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>>)
public Task<long> DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>> predicate)
Parameters
predicateExpression<Func<TEntity, bool>>
Returns
DeleteOneAsync(TKey, IClientSessionHandle)
public override Task<TEntity> DeleteOneAsync(TKey id, IClientSessionHandle session = null)
Parameters
idTKeysessionIClientSessionHandle
Returns
- Task<TEntity>
DeleteOneUnlockedAsync(FilterDefinition<TEntity>, OneOption<TEntity>)
public Task<TEntity> DeleteOneUnlockedAsync(FilterDefinition<TEntity> filter, OneOption<TEntity> options = null)
Parameters
filterFilterDefinition<TEntity>optionsOneOption<TEntity>
Returns
- Task<TEntity>
DeleteOneUnlockedAsync(Expression<Func<TEntity, bool>>, OneOption<TEntity>)
public Task<TEntity> DeleteOneUnlockedAsync(Expression<Func<TEntity, bool>> predicate, OneOption<TEntity> options = null)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOneOption<TEntity>
Returns
- Task<TEntity>
DropCollectionAsync()
public override 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 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
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>
GetDirtyAsync()
Entities that needs cleaning.
public override IAsyncEnumerable<TEntity> GetDirtyAsync()
Returns
- IAsyncEnumerable<TEntity>
GetExpiredAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public IAsyncEnumerable<EntityLock<TEntity, TKey>> GetExpiredAsync(FilterDefinition<TEntity> filter = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<EntityLock<TEntity, TKey>>
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
GetLockedAsync(LockMode, FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public IAsyncEnumerable<EntityLock<TEntity, TKey>> GetLockedAsync(LockMode lockMode, FilterDefinition<TEntity> filter = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
lockModeLockModefilterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<EntityLock<TEntity, TKey>>
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
GetUnlockedAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public IAsyncEnumerable<TEntity> GetUnlockedAsync(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<TEntity>
GetUnlockedAsync(Expression<Func<TEntity, bool>>, Options<TEntity>, CancellationToken)
public IAsyncEnumerable<TEntity> GetUnlockedAsync(Expression<Func<TEntity, bool>> predicate = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<TEntity>
GetWithLockInfoAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
public IAsyncEnumerable<EntityLock<TEntity, TKey>> GetWithLockInfoAsync(FilterDefinition<TEntity> filter = null, Options<TEntity> options = null, CancellationToken cancellationToken = default)
Parameters
filterFilterDefinition<TEntity>optionsOptions<TEntity>cancellationTokenCancellationToken
Returns
- IAsyncEnumerable<EntityLock<TEntity, TKey>>
LockAsync(FilterDefinition<TEntity>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
Locks a single document matched by filter without pre-committing to update-vs-delete.
public Task<LockScope<TEntity, TKey>> LockAsync(FilterDefinition<TEntity> filter, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
LockAsync(Expression<Func<TEntity, bool>>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
Locks a single document matched by predicate without pre-committing to update-vs-delete.
public Task<LockScope<TEntity, TKey>> LockAsync(Expression<Func<TEntity, bool>> predicate = null, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
LockAsync(TKey, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
Locks a single document without pre-committing to update-vs-delete. The decision is taken at commit time via CommitAsync(CommitMode, T).
public Task<LockScope<TEntity, TKey>> LockAsync(TKey id, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
idTKeytimeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
LockManyAsync(FilterDefinition<TEntity>, TimeSpan?, string, CancellationToken, IClientSessionHandle)
Locks all documents matched by filter. The filter is resolved to an id list at acquire time;
documents added later are not locked. Otherwise behaves like LockManyAsync(IEnumerable<TKey>, TimeSpan?, string, CancellationToken, IClientSessionHandle).
public Task<DocumentLease<TEntity, TKey>> LockManyAsync(FilterDefinition<TEntity> filter, TimeSpan? timeout = null, string actor = null, CancellationToken cancellationToken = default, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>timeoutTimeSpan?actorstringcancellationTokenCancellationTokensessionIClientSessionHandle
Returns
- Task<DocumentLease<TEntity, TKey>>
LockManyAsync(IEnumerable<TKey>, TimeSpan?, string, CancellationToken, IClientSessionHandle)
Locks multiple documents identified by ids. Acquisition is sequential and ordered by key
to avoid AB / BA deadlocks; if any acquisition fails, locks acquired so far are released and the failure
is propagated (the lease never returns half-acquired). Per-document commit decisions are staged on the
returned DocumentLease<T, TKey>.
public Task<DocumentLease<TEntity, TKey>> LockManyAsync(IEnumerable<TKey> ids, TimeSpan? timeout = null, string actor = null, CancellationToken cancellationToken = default, IClientSessionHandle session = null)
Parameters
idsIEnumerable<TKey>timeoutTimeSpan?actorstringcancellationTokenCancellationTokensessionIClientSessionHandle
Returns
- Task<DocumentLease<TEntity, TKey>>
LockManyAsync(Expression<Func<TEntity, bool>>, TimeSpan?, string, CancellationToken, IClientSessionHandle)
Locks all documents matched by predicate. The predicate is resolved to an id list at acquire time.
public Task<DocumentLease<TEntity, TKey>> LockManyAsync(Expression<Func<TEntity, bool>> predicate, TimeSpan? timeout = null, string actor = null, CancellationToken cancellationToken = default, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>timeoutTimeSpan?actorstringcancellationTokenCancellationTokensessionIClientSessionHandle
Returns
- Task<DocumentLease<TEntity, TKey>>
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
PickForDeleteAsync(FilterDefinition<TEntity>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForDeleteAsync(FilterDefinition<TEntity> filter, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
PickForDeleteAsync(Expression<Func<TEntity, bool>>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForDeleteAsync(Expression<Func<TEntity, bool>> predicate = null, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
PickForDeleteAsync(TKey, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForDeleteAsync(TKey id, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
idTKeytimeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
PickForUpdateAsync(FilterDefinition<TEntity>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForUpdateAsync(FilterDefinition<TEntity> filter, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
filterFilterDefinition<TEntity>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
PickForUpdateAsync(Expression<Func<TEntity, bool>>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForUpdateAsync(Expression<Func<TEntity, bool>> predicate = null, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
predicateExpression<Func<TEntity, bool>>timeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
PickForUpdateAsync(TKey, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
public Task<EntityScope<TEntity, TKey>> PickForUpdateAsync(TKey id, TimeSpan? timeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, IClientSessionHandle session = null)
Parameters
idTKeytimeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>sessionIClientSessionHandle
Returns
- Task<EntityScope<TEntity, TKey>>
ReleaseManyAsync(ReleaseMode)
public Task<long> ReleaseManyAsync(ReleaseMode mode)
Parameters
modeReleaseMode
Returns
ReleaseOneAsync(TKey, ReleaseMode)
public Task<EntityChangeResult<TEntity>> ReleaseOneAsync(TKey id, ReleaseMode mode)
Parameters
idTKeymodeReleaseMode
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
UpdateUnlockedAsync(FilterDefinition<TEntity>, UpdateDefinition<TEntity>)
public Task<long> UpdateUnlockedAsync(FilterDefinition<TEntity> filter, UpdateDefinition<TEntity> update)
Parameters
filterFilterDefinition<TEntity>updateUpdateDefinition<TEntity>
Returns
UpdateUnlockedAsync(Expression<Func<TEntity, bool>>, UpdateDefinition<TEntity>)
public Task<long> UpdateUnlockedAsync(Expression<Func<TEntity, bool>> predicate, UpdateDefinition<TEntity> update)
Parameters
predicateExpression<Func<TEntity, bool>>updateUpdateDefinition<TEntity>
Returns
WaitForDeleteAsync(TKey, TimeSpan?, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, CancellationToken)
public Task<EntityScope<TEntity, TKey>> WaitForDeleteAsync(TKey id, TimeSpan? lockTimeout = null, TimeSpan? waitTimeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, CancellationToken cancellationToken = default)
Parameters
idTKeylockTimeoutTimeSpan?waitTimeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>cancellationTokenCancellationToken
Returns
- Task<EntityScope<TEntity, TKey>>
WaitForUpdateAsync(TKey, TimeSpan?, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, CancellationToken)
public Task<EntityScope<TEntity, TKey>> WaitForUpdateAsync(TKey id, TimeSpan? lockTimeout = null, TimeSpan? waitTimeout = null, string actor = null, Func<CallbackResult<TEntity>, Task> completeAction = null, CancellationToken cancellationToken = default)
Parameters
idTKeylockTimeoutTimeSpan?waitTimeoutTimeSpan?actorstringcompleteActionFunc<CallbackResult<TEntity>, Task>cancellationTokenCancellationToken
Returns
- Task<EntityScope<TEntity, TKey>>
Events
LockEvent
public event EventHandler<LockEventArgs<TEntity>> LockEvent
Event Type
- EventHandler<LockEventArgs<TEntity>>