public virtual async Task <TEntity> LoadAsync <TEntity>(params object[] keyValues) where TEntity : class { IEntityServices <TEntity> entityServices = _entityServicesFactory.GetEntityServices <TEntity>(); Expression <Func <TEntity, bool> > keyFilter = entityServices.CreateFindByKeyExpression(keyValues); IQueryable <TEntity> query = GetBaseQuery <TEntity>().AsNoTracking(); query = (IQueryable <TEntity>)_eventManager.OnRootLoading(query, _dbContext).Queryable; TEntity entity = await query.SingleOrDefaultAsync(keyFilter); if (entity != null) { _eventManager.OnRootLoaded(entity, _dbContext); } return(entity); }