Interface ILockableRepositoryCollection<TEntity, TKey>
public interface ILockableRepositoryCollection<TEntity, TKey> : IRepositoryCollection<TEntity, TKey>, IReadOnlyRepositoryCollection<TEntity, TKey>, IRepositoryCollection, IReadOnlyRepositoryCollection where TEntity : LockableEntityBase<TKey>
Type Parameters
TEntityTKey
- Inherited Members
Properties
ExceptionFilter
Expression<Func<TEntity, bool>> ExceptionFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
LockedFilter
Expression<Func<TEntity, bool>> LockedFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
LockedOrExceptionFilter
Expression<Func<TEntity, bool>> LockedOrExceptionFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
UnlockedOrExpiredFilter
Expression<Func<TEntity, bool>> UnlockedOrExpiredFilter { get; }
Property Value
- Expression<Func<TEntity, bool>>
Methods
DeleteManyAsync(DeleteMode, Expression<Func<TEntity, bool>>)
Task<long> DeleteManyAsync(DeleteMode deleteMode, Expression<Func<TEntity, bool>> predicate = null)
Parameters
deleteModeDeleteModepredicateExpression<Func<TEntity, bool>>
Returns
DeleteManyUnlockedAsync(FilterDefinition<TEntity>)
Task<long> DeleteManyUnlockedAsync(FilterDefinition<TEntity> filter)
Parameters
filterFilterDefinition<TEntity>
Returns
DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>>)
Task<long> DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>> predicate = null)
Parameters
predicateExpression<Func<TEntity, bool>>
Returns
DeleteOneUnlockedAsync(FilterDefinition<TEntity>, OneOption<TEntity>)
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>)
Task<TEntity> DeleteOneUnlockedAsync(Expression<Func<TEntity, bool>> predicate, OneOption<TEntity> options = null)
Parameters
predicateExpression<Func<TEntity, bool>>optionsOneOption<TEntity>
Returns
- Task<TEntity>
GetExpiredAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
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>>
GetLockedAsync(LockMode, FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
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>>
GetUnlockedAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)
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)
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)
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.
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.
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).
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).
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>.
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.
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>>
PickForDeleteAsync(FilterDefinition<TEntity>, TimeSpan?, string, Func<CallbackResult<TEntity>, Task>, IClientSessionHandle)
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)
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)
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)
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)
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)
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)
Task<long> ReleaseManyAsync(ReleaseMode mode)
Parameters
modeReleaseMode
Returns
ReleaseOneAsync(TKey, ReleaseMode)
Task<EntityChangeResult<TEntity>> ReleaseOneAsync(TKey id, ReleaseMode mode)
Parameters
idTKeymodeReleaseMode
Returns
- Task<EntityChangeResult<TEntity>>
UpdateUnlockedAsync(FilterDefinition<TEntity>, UpdateDefinition<TEntity>)
Task<long> UpdateUnlockedAsync(FilterDefinition<TEntity> filter, UpdateDefinition<TEntity> update)
Parameters
filterFilterDefinition<TEntity>updateUpdateDefinition<TEntity>
Returns
UpdateUnlockedAsync(Expression<Func<TEntity, bool>>, UpdateDefinition<TEntity>)
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)
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)
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
event EventHandler<LockEventArgs<TEntity>> LockEvent
Event Type
- EventHandler<LockEventArgs<TEntity>>