/// <summary> /// Executes the command asynchronously /// </summary> /// <param name="request">The command request</param> /// <param name="cancellationToken">The cancellation token in scope for the operation</param> /// <returns>The result of the command</returns> public async Task <PaginationResult> ExecuteAsync(PaginationRequest request, CancellationToken cancellationToken) { string sqlPagination = GetPaginationSql(request); string sqlPaginationCount = GetSqlRequestCount(request); // These 2 database commands can be executed in parallel Task <DataTable> getDataTask = _databaseCommander.ExecuteSqlAsync(sqlPagination, cancellationToken); Task <int> getCountTask = _databaseCommander.ExecuteScalarAsync <int>(sqlPaginationCount, cancellationToken); await Task.WhenAll(getDataTask, getCountTask); // Get the results of the commands executed asynchronously DataTable dataTable = await getDataTask; int totalCount = await getCountTask; return(new PaginationResult(dataTable, totalCount)); }
public override async Task <TResult> ExecuteAsync(CancellationToken cancellationToken) { return(await _databaseCommander.ExecuteScalarAsync <TResult>((ScalarRequest)CommandRequest, cancellationToken)); }