我有一个实现的应用服务:
public interface IPracticeAppService : IAsyncCrudAppService<PracticeDto, int, PagedAndSortedResultRequestDto,CreatePracticeDto, PracticeDto>
我想使用AsNoTracking
。
在下面的示例中,有没有办法使用AsNoTracking
?
public override Task<PagedResultDto<PracticeDto>> GetAll(PagedAndSortedResultRequestDto input)
{
return base.GetAll(input);
}
答案 0 :(得分:2)
是。但是,.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()
);
}