public async Task <IList <T> > QueryAsync <T>(string sql, params object[] args) { sql = _sqlQueryBuilder.SelectSql <T>(sql); using (var cmd = (DbCommand)CreateCommand(sql, args)) { using (var r = await GetReaderAsync(cmd).ConfigureAwait(false)) { var result = new List <T>(); while (await r.ReadAsync().ConfigureAwait(false)) { result.Add(_dataReaderToPoco.Convert <T>(r)); } return(result); } } }