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

How can I use ToListAsync() method with ABP repository?

我有一个应用程序服务方法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 方法的异步版本?

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