Я ищу способ сделать GetAll asyn c в приложении с фильтром и не блокировать пользователей до тех пор, пока не загрузится:
Вот что я сделал до сих пор;
Это обобщенный c метод в моем dbrepository.
public Task<IQueryable<TEntity>> GetAll(Expression<Func<TEntity, bool>> filter = null)
{
return Task.FromResult(filter != null ? dbContext.Set<TEntity>().Where(filter) : dbContext.Set<TEntity>());
}
Затем я вызываю обобщенный c dbrepository в моем менеджере crud
public virtual async Task<IEnumerable<TEntityDto>> GetAll(Expression<Func<TEntity, bool>> filter = null)
{
return (await repository.GetAll(filter)).Select(i => mapper.Map<TEntityDto>(i)).ToList();
}
Я прочитал эту статью, что ждать Task.FromResult как плохую практику, так как он только добавляет накладные расходы на конечный автомат.
http://www.tugberkugurlu.com/archive/should-i-await-on-task-fromresult-method-calls
Насколько я понимаю, мне нужно сделать этот синтаксис c, но тогда, если пользователи ждут это чтобы загрузить это заблокирует их.
Как мне справиться с этим?