如何在ABP存储库中使用ToListAsync()方法?

时间:2019-12-16 11:14:44

标签: c# asynchronous iqueryable abp

我有一个应用程序服务方法GetWithName,我想编写它的异步版本。为此,我尝试使用ToListAsync(),但存储库中没有此方法。

public PagedResultDto<BookDto> GetWithName(SearchWithNameRequestDto input)
{
    var books = 
        Repository
        .Where(p => p.Name.Contains(input.Name))
        .ToList();

    return new PagedResultDto<BookDto>
    {
        TotalCount = books.Count,
        Items = ObjectMapper.Map<List<Book>, List<BookDto>>(books)
    };
}

如何使用ToList方法的异步版本?

1 个答案:

答案 0 :(得分:2)

ToListAsync取决于ORM:

// using Microsoft.EntityFrameworkCore;

var query = Repository
    .Where(p => p.Name.Contains(input.Name));
var books = await query.ToListAsync();

对于DI(独立于ORM)解决方案,请注入IAsyncQueryableExecuter并执行以下操作:

// using Abp.Linq;

var query = Repository
    .Where(p => p.Name.Contains(input.Name));
var books = await _asyncQueryableExecuter.ToListAsync(query);