Table of Contents

Class LockableRepositoryCollectionBase<TEntity, TKey>

Namespace
Tharga.MongoDB.Lockable
Assembly
Tharga.MongoDB.dll
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

TEntity
TKey
Inheritance
LockableRepositoryCollectionBase<TEntity, TKey>
Implements
IRepositoryCollection<TEntity, TKey>
Derived
Inherited Members

Constructors

LockableRepositoryCollectionBase(IMongoDbServiceFactory, ILogger, DatabaseContext)

protected LockableRepositoryCollectionBase(IMongoDbServiceFactory mongoDbServiceFactory, ILogger logger = null, DatabaseContext databaseContext = null)

Parameters

mongoDbServiceFactory IMongoDbServiceFactory
logger ILogger
databaseContext DatabaseContext

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

bool

CoreIndices

public override IEnumerable<CreateIndexModel<TEntity>> CoreIndices { get; }

Property Value

IEnumerable<CreateIndexModel<TEntity>>

DefaultTimeout

protected virtual TimeSpan DefaultTimeout { get; init; }

Property Value

TimeSpan

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

bool

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

entity TEntity
session IClientSessionHandle

Returns

Task

AddManyAsync(IEnumerable<TEntity>, IClientSessionHandle)

public override Task AddManyAsync(IEnumerable<TEntity> entities, IClientSessionHandle session = null)

Parameters

entities IEnumerable<TEntity>
session IClientSessionHandle

Returns

Task

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

field Expression<Func<TEntity, decimal>>
predicate Expression<Func<TEntity, bool>>
cancellationToken CancellationToken

Returns

Task<decimal>

CountAsync(FilterDefinition<TEntity>, CancellationToken)

public override Task<long> CountAsync(FilterDefinition<TEntity> filter, CancellationToken cancellationToken = default)

Parameters

filter FilterDefinition<TEntity>
cancellationToken CancellationToken

Returns

Task<long>

CountAsync(Expression<Func<TEntity, bool>>, CancellationToken)

public override Task<long> CountAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)

Parameters

predicate Expression<Func<TEntity, bool>>
cancellationToken CancellationToken

Returns

Task<long>

DeleteManyAsync(DeleteMode, Expression<Func<TEntity, bool>>)

public Task<long> DeleteManyAsync(DeleteMode deleteMode, Expression<Func<TEntity, bool>> predicate = null)

Parameters

deleteMode DeleteMode
predicate Expression<Func<TEntity, bool>>

Returns

Task<long>

DeleteManyUnlockedAsync(FilterDefinition<TEntity>)

public Task<long> DeleteManyUnlockedAsync(FilterDefinition<TEntity> filter)

Parameters

filter FilterDefinition<TEntity>

Returns

Task<long>

DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>>)

public Task<long> DeleteManyUnlockedAsync(Expression<Func<TEntity, bool>> predicate)

Parameters

predicate Expression<Func<TEntity, bool>>

Returns

Task<long>

DeleteOneAsync(TKey, IClientSessionHandle)

public override Task<TEntity> DeleteOneAsync(TKey id, IClientSessionHandle session = null)

Parameters

id TKey
session IClientSessionHandle

Returns

Task<TEntity>

DeleteOneUnlockedAsync(FilterDefinition<TEntity>, OneOption<TEntity>)

public Task<TEntity> DeleteOneUnlockedAsync(FilterDefinition<TEntity> filter, OneOption<TEntity> options = null)

Parameters

filter FilterDefinition<TEntity>
options OneOption<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

predicate Expression<Func<TEntity, bool>>
options OneOption<TEntity>

Returns

Task<TEntity>

DropCollectionAsync()

public override Task DropCollectionAsync()

Returns

Task

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

cancellationToken CancellationToken

Returns

Task<long>

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

execute Func<IMongoCollection<TEntity>, CancellationToken, Task<T>>
operation Operation
cancellationToken CancellationToken

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

execute Func<IMongoCollection<TEntity>, Task<T>>
operation Operation

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

queryFactory Func<IMongoCollection<TEntity>, CancellationToken, Task<IAsyncCursor<T>>>
cancellationToken CancellationToken

Returns

IAsyncEnumerable<T>

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

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

predicate Expression<Func<TEntity, bool>>
options Options<TEntity>
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

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

IReadOnlyList<IndexFailure>

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

lockMode LockMode
filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

Returns

Task<Result<TEntity, TKey>>

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

predicate Expression<Func<TEntity, bool>>
options Options<TEntity>
cancellationToken CancellationToken

Returns

Task<Result<TEntity, TKey>>

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

Returns

Task<Result<T>>

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

predicate Expression<Func<TEntity, bool>>
options Options<TEntity>
cancellationToken CancellationToken

Returns

Task<Result<T>>

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

filter FilterDefinition<TEntity>
options OneOption<TEntity>
cancellationToken CancellationToken

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

predicate Expression<Func<TEntity, bool>>
options OneOption<TEntity>
cancellationToken CancellationToken

Returns

Task<TEntity>

GetOneAsync(TKey, CancellationToken)

public override Task<TEntity> GetOneAsync(TKey id, CancellationToken cancellationToken = default)

Parameters

id TKey
cancellationToken CancellationToken

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

pageSize int
position PagePosition
predicate Expression<Func<TEntity, bool>>
sortBy Expression<Func<TEntity, object>>
ascending bool
cancellationToken CancellationToken

Returns

Task<CursorPage<TEntity>>

GetPageProjectionAsync<T>(int, PagePosition, Expression<Func<TEntity, T>>, Expression<Func<TEntity, bool>>, Expression<Func<TEntity, object>>, bool, CancellationToken)

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

pageSize int
position PagePosition
projection Expression<Func<TEntity, T>>
predicate Expression<Func<TEntity, bool>>
sortBy Expression<Func<TEntity, object>>
ascending bool
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

Returns

IAsyncEnumerable<T>

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

predicate Expression<Func<TEntity, bool>>
options Options<TEntity>
cancellationToken CancellationToken

Returns

IAsyncEnumerable<T>

Type Parameters

T

GetSizeAsync(CancellationToken)

public override Task<long> GetSizeAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

Task<long>

GetUnlockedAsync(FilterDefinition<TEntity>, Options<TEntity>, CancellationToken)

public IAsyncEnumerable<TEntity> GetUnlockedAsync(FilterDefinition<TEntity> filter, Options<TEntity> options = null, CancellationToken cancellationToken = default)

Parameters

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

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

predicate Expression<Func<TEntity, bool>>
options Options<TEntity>
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
options Options<TEntity>
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

Returns

Task<LockScope<TEntity, TKey>>

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

predicate Expression<Func<TEntity, bool>>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

Returns

Task<LockScope<TEntity, TKey>>

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

id TKey
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

Returns

Task<LockScope<TEntity, TKey>>

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

filter FilterDefinition<TEntity>
timeout TimeSpan?
actor string
cancellationToken CancellationToken
session IClientSessionHandle

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

ids IEnumerable<TKey>
timeout TimeSpan?
actor string
cancellationToken CancellationToken
session IClientSessionHandle

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

predicate Expression<Func<TEntity, bool>>
timeout TimeSpan?
actor string
cancellationToken CancellationToken
session IClientSessionHandle

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

field Expression<Func<TEntity, TField>>
predicate Expression<Func<TEntity, bool>>
cancellationToken CancellationToken

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

field Expression<Func<TEntity, TField>>
predicate Expression<Func<TEntity, bool>>
cancellationToken CancellationToken

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

filter FilterDefinition<TEntity>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

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

predicate Expression<Func<TEntity, bool>>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

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

id TKey
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

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

filter FilterDefinition<TEntity>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

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

predicate Expression<Func<TEntity, bool>>
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

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

id TKey
timeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
session IClientSessionHandle

Returns

Task<EntityScope<TEntity, TKey>>

ReleaseManyAsync(ReleaseMode)

public Task<long> ReleaseManyAsync(ReleaseMode mode)

Parameters

mode ReleaseMode

Returns

Task<long>

ReleaseOneAsync(TKey, ReleaseMode)

public Task<EntityChangeResult<TEntity>> ReleaseOneAsync(TKey id, ReleaseMode mode)

Parameters

id TKey
mode ReleaseMode

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

field Expression<Func<TEntity, decimal>>
predicate Expression<Func<TEntity, bool>>
cancellationToken CancellationToken

Returns

Task<decimal>

TryAddAsync(TEntity, IClientSessionHandle)

public override Task<bool> TryAddAsync(TEntity entity, IClientSessionHandle session = null)

Parameters

entity TEntity
session IClientSessionHandle

Returns

Task<bool>

UpdateUnlockedAsync(FilterDefinition<TEntity>, UpdateDefinition<TEntity>)

public Task<long> UpdateUnlockedAsync(FilterDefinition<TEntity> filter, UpdateDefinition<TEntity> update)

Parameters

filter FilterDefinition<TEntity>
update UpdateDefinition<TEntity>

Returns

Task<long>

UpdateUnlockedAsync(Expression<Func<TEntity, bool>>, UpdateDefinition<TEntity>)

public Task<long> UpdateUnlockedAsync(Expression<Func<TEntity, bool>> predicate, UpdateDefinition<TEntity> update)

Parameters

predicate Expression<Func<TEntity, bool>>
update UpdateDefinition<TEntity>

Returns

Task<long>

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

id TKey
lockTimeout TimeSpan?
waitTimeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
cancellationToken CancellationToken

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

id TKey
lockTimeout TimeSpan?
waitTimeout TimeSpan?
actor string
completeAction Func<CallbackResult<TEntity>, Task>
cancellationToken CancellationToken

Returns

Task<EntityScope<TEntity, TKey>>

Events

LockEvent

public event EventHandler<LockEventArgs<TEntity>> LockEvent

Event Type

EventHandler<LockEventArgs<TEntity>>