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)
 
virtual async Task< T > AddAsync< T > (T entity, CancellationToken cancellationToken=default)
 
virtual async Task AddAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 
virtual async Task< bool > AnyAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 
virtual async Task< int > CountAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 
virtual async Task DeleteAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 
virtual async Task< T?> FirstOrDefaultAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 
virtual async Task< T?> GetByIdAsync< T > (string id, CancellationToken cancellationToken=default)
 
virtual IIncludeEvaluator< T > GetIncludeEvaluator< T > ()
 
virtual async Task< IReadOnlyList< T > > ListAllAsync< T > (CancellationToken cancellationToken=default)
 
virtual async Task< IReadOnlyList< T > > ListAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 
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)
 
async Task TransactionCommit (CancellationToken cancellationToken=default)
 
async Task TransactionMakeSavePoint (string name, CancellationToken cancellationToken=default)
 
async Task TransactionRemoveSavePoint (string name, CancellationToken cancellationToken=default)
 
async Task TransactionRollback (CancellationToken cancellationToken=default)
 
async Task TransactionRollbackToSavePoint (string name, CancellationToken cancellationToken=default)
 
virtual async Task UpdateAsync< T > (T entity, CancellationToken cancellationToken=default)
 
virtual async Task UpdateAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 
virtual async Task UpdateAsync< T > (ISpecification< T > spec, Action< T > updater, CancellationToken cancellationToken=default)
 
async Task< IReadOnlyList< TFinal > > EvaluateJoinQuery< T1, T2, TKey, TSelect, TFinal > (IJoinQuery< T1, T2, TKey, TSelect, TFinal > joinQuery, CancellationToken cancellationToken=default)
 
void Dispose ()
 
async ValueTask DisposeAsync ()
 
- Public Member Functions inherited from Nabu.Data.IDao< TDbContext >
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.
 
Task< T > AddAsync< T > (T entity, CancellationToken cancellationToken=default)
 Add an entity.
 
Task AddAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 Add entities.
 
Task< bool > AnyAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Check if at least one entity match specification.
 
Task< int > CountAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 count entities that match the specification in storage
 
Task DeleteAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Remove all entities that match the specification.
 
Task< T?> FirstOrDefaultAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 returns the first entity that matches the specification
 
Task< T?> GetByIdAsync< T > (string id, CancellationToken cancellationToken=default)
 return the entity with specified Id
 
IIncludeEvaluator< T > GetIncludeEvaluator< T > ()
 
Task< IReadOnlyList< T > > ListAllAsync< T > (CancellationToken cancellationToken=default)
 return all entities from storage
 
Task< IReadOnlyList< T > > ListAsync< T > (ISpecification< T > spec, CancellationToken cancellationToken=default)
 Return all entities that match the specification.
 
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
 
Task TransactionBegin (CancellationToken cancellationToken=default)
 Begin transaction.
 
Task TransactionCommit (CancellationToken cancellationToken=default)
 Commit current transaction.
 
Task TransactionMakeSavePoint (string name, CancellationToken cancellationToken=default)
 Make named save point in transaction.
 
Task TransactionRemoveSavePoint (string name, CancellationToken cancellationToken=default)
 Remove named save point in transaction.
 
Task TransactionRollback (CancellationToken cancellationToken=default)
 Rollback current transaction.
 
Task TransactionRollbackToSavePoint (string name, CancellationToken cancellationToken=default)
 Rollback transaction to specified savepoint.
 
Task UpdateAsync< T > (T entity, CancellationToken cancellationToken=default)
 update entity
 
Task UpdateAsync< T > (IEnumerable< T > entities, CancellationToken cancellationToken=default)
 update entities
 
Task UpdateAsync< T > (ISpecification< T > spec, Action< T > updater, CancellationToken cancellationToken=default)
 Apply updater to entities that match specification.
 
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.
 

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]
 
- Properties inherited from Nabu.Data.IDao< TDbContext >
TContext 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

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

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

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

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

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 )
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

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

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

◆ GetIncludeEvaluator< T >()

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

Type Constraints
T :class 
T :IEntity 

◆ ListAllAsync< T >()

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

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

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 )
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() 

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

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

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

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

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