我可以在 CRUD 服务 GetAll 中使用 EF Core 2.0 'AsNoTracking' 吗?

Can I use EF Core 2.0 'AsNoTracking' in CRUD service GetAll?

我有一个应用服务实现了:

public interface IPracticeAppService : IAsyncCrudAppService<PracticeDto, int, PagedAndSortedResultRequestDto,CreatePracticeDto, PracticeDto>

我想使用 AsNoTracking

在下面的例子中,有没有办法使用AsNoTracking

public override Task<PagedResultDto<PracticeDto>> GetAll(PagedAndSortedResultRequestDto input)
{    
    return base.GetAll(input);
}

是的。但是,.AsNoTracking() 仅适用于 IQueryable,因此您不能调用 base 方法。

public override async Task<PagedResultDto<PracticeDto>> GetAll(PagedAndSortedResultRequestDto input)
{
    CheckGetAllPermission();

    var query = CreateFilteredQuery(input).AsNoTracking(); // Here!

    var totalCount = await AsyncQueryableExecuter.CountAsync(query);

    query = ApplySorting(query, input);
    query = ApplyPaging(query, input);

    var entities = await AsyncQueryableExecuter.ToListAsync(query);

    return new PagedResultDto<PracticeDto>(
        totalCount,
        entities.Select(MapToEntityDto).ToList()
    );
}