Nabû 1.0.0
Standardizing .NET developments with abstractions
Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext > Class Template Reference
+ Inheritance diagram for Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >:

Public Member Functions

TReturn SelectMethod< T, TSelect, TReturn > (ISpecification< T > spec, Expression< Func< T, TSelect > > mapper, Expression< Func< IQueryable< TSelect >, TReturn > > method)
 Execute method on ReadRequest result as IQueryable.
 
virtual async Task< T > AddAsync< T > (T entity, CancellationToken cancellationToken=default)
 Add an entity.
Parameters
entity
cancellationToken
Template Parameters
T
Returns
inserted entity

 
virtual async Task AddAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 Add entities.
Parameters
entities
cancellationToken
Template Parameters
T

 
virtual async Task< bool > AnyAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Check if at least one entity match specification.
Parameters
spec
cancellationToken
Template Parameters
T
Returns
true if at least one entity match specification

 
virtual async Task< int > CountAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 count entities that match the specification in storage
Parameters
spec
cancellationToken
Template Parameters
T
Returns
number of entities that match the specification

 
virtual async Task DeleteAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Remove all entities that match the specification.
Parameters
spec
cancellationToken
Template Parameters
T
Returns

 
virtual async Task< T?> FirstOrDefaultAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 returns the first entity that matches the specification
Parameters
spec
cancellationToken
Template Parameters
T
Returns
first entity that matches the specification

 
virtual async Task< T?> GetByIdAsync< T > (string id, CancellationToken cancellationToken=default)
 return the entity with specified Id
Parameters
id
cancellationToken
Template Parameters
T
Returns
entity with specified Id

 
virtual IIncludeEvaluator< T > GetIncludeEvaluator< T > ()
 
virtual async Task< IReadOnlyList< T > > ListAllAsync< T > (CancellationToken cancellationToken=default)
 return all entities from storage
Parameters
cancellationToken
Template Parameters
T
Returns
all entities from storage

 
virtual async Task< IReadOnlyList< T > > ListAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Return all entities that match the specification.
Parameters
spec
cancellationToken
Template Parameters
T
Returns
all entities that match the specification

 
virtual async Task< IReadOnlyList< TS > > SelectAllAsync< T, TS > (Expression< Func< T, TS > > mapper, CancellationToken cancellationToken=default)
 
virtual async Task< IReadOnlyList< TS > > SelectAsync< T, TS > (ISpecification< T > spec, Expression< Func< T, TS > > mapper, CancellationToken cancellationToken=default)
 
virtual async Task< TS?> SelectByIdAsync< T, TS > (string id, Expression< Func< T, TS > > mapper, CancellationToken cancellationToken=default)
 
virtual async Task< TS?> SelectFirstOrDefaultAsync< T, TS > (ISpecification< T > spec, Expression< Func< T, TS > > mapper, CancellationToken cancellationToken=default)
 
virtual async Task< IReadOnlyList< TS > > SelectGroupBy< T, TKey, TS > (ISpecification< T > spec, Expression< Func< T, TKey > > groupBy, Expression< Func< IGrouping< TKey, T >, TS > > mapper, CancellationToken cancellationToken=default)
 
async Task TransactionBegin (CancellationToken cancellationToken=default)
 Begin transaction.
Parameters
cancellationToken
Returns

 
async Task TransactionCommit (CancellationToken cancellationToken=default)
 Commit current transaction.
Parameters
cancellationToken
Returns

 
async Task TransactionMakeSavePoint (string name, CancellationToken cancellationToken=default)
 Make named save point in transaction.
Parameters
name
cancellationToken
Returns

 
async Task TransactionRemoveSavePoint (string name, CancellationToken cancellationToken=default)
 Remove named save point in transaction.
Parameters
name
cancellationToken
Returns

 
async Task TransactionRollback (CancellationToken cancellationToken=default)
 Rollback current transaction.
Parameters
cancellationToken
Returns

 
async Task TransactionRollbackToSavePoint (string name, CancellationToken cancellationToken=default)
 Rollback transaction to specified savepoint.
Parameters
name
cancellationToken
Returns

 
virtual async Task UpdateAsync< T > (T entity, CancellationToken cancellationToken=default)
 update entity
Parameters
entity
cancellationToken
Template Parameters
T
Returns

 
virtual async Task UpdateAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 update entities
Parameters
entities
cancellationToken
Template Parameters
T
Returns

 
virtual async Task UpdateAsync< T > (ISpecification< T > spec, Action< T > updater, CancellationToken cancellationToken=default)
 Apply updater to entities that match specification.
Parameters
spec
updater
cancellationToken
Template Parameters
T
Returns

 
async Task< IReadOnlyList< TFinal > > EvaluateJoinQuery< T1, T2, TKey, TSelect, TFinal > (IJoinQuery< T1, T2, TKey, TSelect, TFinal > joinQuery, CancellationToken cancellationToken=default)
 Execute read query with multiple Joins.
 
void Dispose ()
 
async ValueTask DisposeAsync ()
 
- Public Member Functions inherited from Nabu.Data.IDao
Task< IReadOnlyList< TSelect > > SelectAllAsync< T, TSelect > (Expression< Func< T, TSelect > > mapper, CancellationToken cancellationToken=default)
 return list of TSelect mapped from all entities from storage
 
Task< IReadOnlyList< TSelect > > SelectAsync< T, TSelect > (ISpecification< T > spec, Expression< Func< T, TSelect > > mapper, CancellationToken cancellationToken=default)
 return list of TSelect mapped from all entities that match the specification
 
Task< TSelect?> SelectByIdAsync< T, TSelect > (string id, Expression< Func< T, TSelect > > mapper, CancellationToken cancellationToken=default)
 return TSelect mapped from entity with specified Id
 
Task< TSelect?> SelectFirstOrDefaultAsync< T, TSelect > (ISpecification< T > spec, Expression< Func< T, TSelect > > mapper, CancellationToken cancellationToken=default)
 return TSelect mapped from first entity that match specification
 
Task< IReadOnlyList< TSelect > > SelectGroupBy< T, TKey, TSelect > (ISpecification< T > spec, Expression< Func< T, TKey > > groupBy, Expression< Func< IGrouping< TKey, T >, TSelect > > mapper, CancellationToken cancellationToken=default)
 return list of TSelect mapped from all entities that match the specification grouped by specified expression
 

Protected Member Functions

 AbstractEntityFrameworkDao (TDbContext? dbContext)
 
IQueryable< TFinal >? EvaluateJoinAsQueryGeneric< T1, T2, TKey, TSelect, TFinal > (IQueryable< T1 > joinSource, IJoinQuery< T1, T2, TKey, TSelect, TFinal >? joinQuery)
 
IQueryable< TFinal >? EvaluateJoinAsQuery< TSelect, TFinal > (IQueryable< TSelect > joinSource, IJoinQuery? joinQuery)
 
virtual Task BeforeRequest (CancellationToken cancellationToken=default)
 
virtual Task AfterUpdate (CancellationToken cancellationToken=default)
 
virtual IQueryable< T > ApplySpecification< T > (ISpecification< T > spec, bool noTracking=true)
 
virtual void SetUpdateDateOnEntity< T > (T entity)
 
virtual void Dispose (bool disposing)
 
virtual async ValueTask DisposeAsyncCore ()
 

Protected Attributes

TDbContext? _dbContext
 
IDbContextTransaction? _transaction
 

Properties

TDbContext Context [get]
 

Member Function Documentation

◆ AddAsync< T >() [1/2]

virtual async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.AddAsync< T > ( IEnumerable< T > entities,
CancellationToken cancellationToken = default )
virtual

Add entities.

Parameters
entities
cancellationToken
Template Parameters
T

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ AddAsync< T >() [2/2]

virtual async Task< T > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.AddAsync< T > ( T entity,
CancellationToken cancellationToken = default )
virtual

Add an entity.

Parameters
entity
cancellationToken
Template Parameters
T
Returns
inserted entity

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ AnyAsync< T >()

virtual async Task< bool > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.AnyAsync< T > ( ISpecification< T > spec,
CancellationToken cancellationToken = default )
virtual

Check if at least one entity match specification.

Parameters
spec
cancellationToken
Template Parameters
T
Returns
true if at least one entity match specification

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ ApplySpecification< T >()

virtual IQueryable< T > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.ApplySpecification< T > ( ISpecification< T > spec,
bool noTracking = true )
protectedvirtual
Type Constraints
T :class 
T :IEntity 
T :new() 

◆ CountAsync< T >()

virtual async Task< int > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.CountAsync< T > ( ISpecification< T > spec,
CancellationToken cancellationToken = default )
virtual

count entities that match the specification in storage

Parameters
spec
cancellationToken
Template Parameters
T
Returns
number of entities that match the specification

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ DeleteAsync< T >()

virtual async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.DeleteAsync< T > ( ISpecification< T > spec,
CancellationToken cancellationToken = default )
virtual

Remove all entities that match the specification.

Parameters
spec
cancellationToken
Template Parameters
T
Returns

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ EvaluateJoinAsQueryGeneric< T1, T2, TKey, TSelect, TFinal >()

IQueryable< TFinal >? Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.EvaluateJoinAsQueryGeneric< T1, T2, TKey, TSelect, TFinal > ( IQueryable< T1 > joinSource,
IJoinQuery< T1, T2, TKey, TSelect, TFinal >? joinQuery )
protected
Type Constraints
T2 :class 
T2 :IEntity 
T2 :new() 

◆ EvaluateJoinQuery< T1, T2, TKey, TSelect, TFinal >()

async Task< IReadOnlyList< TFinal > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.EvaluateJoinQuery< T1, T2, TKey, TSelect, TFinal > ( IJoinQuery< T1, T2, TKey, TSelect, TFinal > joinQuery,
CancellationToken cancellationToken = default )

Execute read query with multiple Joins.

Parameters
joinQuery
cancellationToken
Template Parameters
T1
T2
TKey
TSelect
TFinal
Returns

Implements Nabu.Data.IDao.

Type Constraints
T1 :class 
T1 :IEntity 
T1 :new() 
T2 :class 
T2 :IEntity 
T2 :new() 

◆ FirstOrDefaultAsync< T >()

virtual async Task< T?> Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.FirstOrDefaultAsync< T > ( ISpecification< T > spec,
CancellationToken cancellationToken = default )
virtual

returns the first entity that matches the specification

Parameters
spec
cancellationToken
Template Parameters
T
Returns
first entity that matches the specification

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ GetByIdAsync< T >()

virtual async Task< T?> Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.GetByIdAsync< T > ( string id,
CancellationToken cancellationToken = default )
virtual

return the entity with specified Id

Parameters
id
cancellationToken
Template Parameters
T
Returns
entity with specified Id

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ GetIncludeEvaluator< T >()

virtual IIncludeEvaluator< T > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.GetIncludeEvaluator< T > ( )
virtual

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 

◆ ListAllAsync< T >()

virtual async Task< IReadOnlyList< T > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.ListAllAsync< T > ( CancellationToken cancellationToken = default)
virtual

return all entities from storage

Parameters
cancellationToken
Template Parameters
T
Returns
all entities from storage

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ ListAsync< T >()

virtual async Task< IReadOnlyList< T > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.ListAsync< T > ( ISpecification< T > spec,
CancellationToken cancellationToken = default )
virtual

Return all entities that match the specification.

Parameters
spec
cancellationToken
Template Parameters
T
Returns
all entities that match the specification

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectAllAsync< T, TS >()

virtual async Task< IReadOnlyList< TS > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectAllAsync< T, TS > ( Expression< Func< T, TS > > mapper,
CancellationToken cancellationToken = default )
virtual

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectAsync< T, TS >()

virtual async Task< IReadOnlyList< TS > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectAsync< T, TS > ( ISpecification< T > spec,
Expression< Func< T, TS > > mapper,
CancellationToken cancellationToken = default )
virtual

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectByIdAsync< T, TS >()

virtual async Task< TS?> Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectByIdAsync< T, TS > ( string id,
Expression< Func< T, TS > > mapper,
CancellationToken cancellationToken = default )
virtual

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectFirstOrDefaultAsync< T, TS >()

virtual async Task< TS?> Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectFirstOrDefaultAsync< T, TS > ( ISpecification< T > spec,
Expression< Func< T, TS > > mapper,
CancellationToken cancellationToken = default )
virtual

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectGroupBy< T, TKey, TS >()

virtual async Task< IReadOnlyList< TS > > Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectGroupBy< T, TKey, TS > ( ISpecification< T > spec,
Expression< Func< T, TKey > > groupBy,
Expression< Func< IGrouping< TKey, T >, TS > > mapper,
CancellationToken cancellationToken = default )
virtual

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SelectMethod< T, TSelect, TReturn >()

TReturn Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SelectMethod< T, TSelect, TReturn > ( ISpecification< T > spec,
Expression< Func< T, TSelect > > mapper,
Expression< Func< IQueryable< TSelect >, TReturn > > method )

Execute method on ReadRequest result as IQueryable.

Parameters
spec
mapper
method
Template Parameters
T
TSelect
TReturn
Returns

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ SetUpdateDateOnEntity< T >()

virtual void Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.SetUpdateDateOnEntity< T > ( T entity)
protectedvirtual
Type Constraints
T :class 
T :IEntity 
T :new() 

◆ TransactionBegin()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionBegin ( CancellationToken cancellationToken = default)

Begin transaction.

Parameters
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ TransactionCommit()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionCommit ( CancellationToken cancellationToken = default)

Commit current transaction.

Parameters
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ TransactionMakeSavePoint()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionMakeSavePoint ( string name,
CancellationToken cancellationToken = default )

Make named save point in transaction.

Parameters
name
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ TransactionRemoveSavePoint()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionRemoveSavePoint ( string name,
CancellationToken cancellationToken = default )

Remove named save point in transaction.

Parameters
name
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ TransactionRollback()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionRollback ( CancellationToken cancellationToken = default)

Rollback current transaction.

Parameters
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ TransactionRollbackToSavePoint()

async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.TransactionRollbackToSavePoint ( string name,
CancellationToken cancellationToken = default )

Rollback transaction to specified savepoint.

Parameters
name
cancellationToken
Returns

Implements Nabu.Data.IDao.

◆ UpdateAsync< T >() [1/3]

virtual async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.UpdateAsync< T > ( IEnumerable< T > entities,
CancellationToken cancellationToken = default )
virtual

update entities

Parameters
entities
cancellationToken
Template Parameters
T
Returns

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ UpdateAsync< T >() [2/3]

virtual async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.UpdateAsync< T > ( ISpecification< T > spec,
Action< T > updater,
CancellationToken cancellationToken = default )
virtual

Apply updater to entities that match specification.

Parameters
spec
updater
cancellationToken
Template Parameters
T
Returns

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

◆ UpdateAsync< T >() [3/3]

virtual async Task Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.UpdateAsync< T > ( T entity,
CancellationToken cancellationToken = default )
virtual

update entity

Parameters
entity
cancellationToken
Template Parameters
T
Returns

Implements Nabu.Data.IDao.

Type Constraints
T :class 
T :IEntity 
T :new() 

Property Documentation

◆ Context

TDbContext Nabu.Data.EntityFramework.AbstractEntityFrameworkDao< TDbContext >.Context
get