Skip to main content

Database Repository

The IDatabaseRepository<TEntity> interface exposes the operations below. All methods are asynchronous and respect the configured read & property filters and soft delete behavior.

CreateAsync​

The CreateAsync method is used to insert an entity in the database. It throws a ConflictErrorException if an entity with the same id already exists.

GetAsync​

The GetAsync methods provide several ways to get a single entity from the database (by id, by id and partition key, or by a predicate). A NotFoundErrorException exception is thrown if the entity does not exist or if it has been soft-deleted.

tip

Prefer the overload that takes both id and partitionKey. Resolving an entity by id alone is significantly less efficient because it cannot target a single partition.

GetAllAsync​

The GetAllAsync method returns all entities of the repository (respecting read and property filters as well as soft delete).

GetByIdsAsync​

The GetByIdsAsync method returns all entities whose id is contained in the given list of ids.

QueryAsync​

The QueryAsync methods provide several ways to get multiple entities from the database, either via a predicate or via QueryParameters. They support sorting & pagination.

QuerySingleAsync​

The QuerySingleAsync method provides a way to get a single entity from the database. It throws a PreconditionFailedErrorException if more results are returned than the expected one. It also throws a NotFoundErrorException when no result is found.

CountAsync​

The CountAsync method provides a ways to count entities from the database, which match a given filter.

ExistsAsync​

The ExistsAsync methods are used to check if entities exist in the database. They all return true when found or false otherwise.

EnsureExistsAsync​

The EnsureExistsAsync methods are used to check if entities exist in the database. They throw a NotFoundErrorException if the no entities are found.

IterateAsync​

The IterateAsync methods are used to iterate the repository via a filter and apply an operation on the filtered results.

ReplaceAsync​

The ReplaceAsync method can be used to replace an existing entity in the database. When the entity opts into optimistic concurrency via the [ETag] attribute, a stale replace throws a PreconditionFailedErrorException.

UpsertAsync​

The UpsertAsync methods insert the entity if it does not exist yet, or replace it otherwise. Upserts are unconditional and do not perform an eTag check.

UpdateAsync​

The UpdateAsync methods read an entity, apply a given update action (synchronous or asynchronous) and replace it. For entities using optimistic concurrency, a concurrent modification is retried automatically (read-modify-write with a fresh eTag) before the PreconditionFailedErrorException is surfaced.

DeleteAsync​

The DeleteAsync methods remove an entity by id, by id and partition key, or by a predicate. When soft delete is enabled, the entity is flagged as deleted instead of being physically removed. Prefer the overload with a partition key (or include the partition key in the predicate) for best performance.