public async Task <IList <TEntity> > LoadPersisted <TEntity>(KeyValue[] keys) where TEntity : class { IEntityServices <TEntity> entityServices = _entityServicesFactory.GetEntityServices <TEntity>(); Expression <Func <TEntity, bool> > keyFilter = entityServices.CreateFilterByKeysExpression(keys); IQueryable <TEntity> query = GetBaseQuery <TEntity>().AsTracking().Where(keyFilter); query = (IQueryable <TEntity>)_eventManager.OnRootLoading(query, _dbContext).Queryable; IList <TEntity> persisted = await query.ToListAsync(); if (persisted != null) { for (int i = 0; i < persisted.Count; i++) { persisted[i] = (TEntity)_eventManager.OnRootLoaded(persisted[i], _dbContext).Root; } } return(persisted); }