public override async Task <Option <IPagedResult <ObterBancosQueryResult> > > Handle(ObterBancosQuery request, CancellationToken cancellationToken)
 {
     return(await GetUsingDapper(request).ConfigureAwait(false));
 }
        private async Task <Option <IPagedResult <ObterBancosQueryResult> > > GetUsingDapper(ObterBancosQuery request)
        {
            const string sql = @"
SELECT COUNT(*) FROM Bancos;

SELECT
        Id,
        Codigo,
        Nome,
        NomeCurto  

FROM Bancos
LIMIT @count OFFSET @skip;";

            var sqlParameters = new { skip = request.GetSkip(), count = request.Results };

            using (var multiResults = await _context.Database
                                      .GetDbConnection()
                                      .QueryMultipleAsync(sql, sqlParameters))
            {
                var total = await multiResults.ReadFirstOrDefaultAsync <long>();

                var records = await multiResults.ReadAsync <ObterBancosQueryResult>();

                var pagedResult =
                    PagedResult <ObterBancosQueryResult> .Create(records, request.Page, request.Results, total);

                return(Option.Some <IPagedResult <ObterBancosQueryResult> >(pagedResult));
            }
        }
        public async Task <IActionResult> GetAll([FromQuery] ObterBancosQuery query)
        {
            var response = await Dispatcher.Send(query);

            return(response.AsHttpResponse(HttpContext));
        }