c # Dapper - usando linq no método QueryAsync

Sep 01 2020

Por que não posso usar .select em um queryAsync quando funciona bem no Query? Por exemplo, aqui o .select grita comigo dizendo que não é possível resolver o símbolo "selecionar":

var result = await sqlConnection.QueryAsync<Product>(procedure,
                            commandType: CommandType.StoredProcedure).Select(p => new Product
                        {
                            Code= (string)p.fldCode,
                            Name=(string)p.fldName
                            });

mas assim que eu mudo para Query, ele não grita mais. se houver alguma coisa, ele tem problemas para resolver as colunas fldCode do sp:

 var result = sqlConnection.Query<Product>(procedure,
                                commandType: CommandType.StoredProcedure).Select(p => new Product
                            {
                                Code= (string)p.fldCode,
                                Name=(string)p.fldName
                                });

por que é isso?

Eu fiz uma pergunta anterior aqui C # Dapper mapeando colunas para propriedades de entidade - "Não é possível resolver o símbolo 'Selecionar'"

Respostas

1 Milney Sep 01 2020 at 09:06

Os métodos assíncronos retornam uma tarefa (basicamente um espaço reservado para o resultado final da ação assíncrona). Você precisa aguardar para obter o valor real

var result = (await sqlConnection.QueryAsync<Product>(
                 procedure,
                 commandType: CommandType.StoredProcedure
             )).Select(p => new Product
                {
                    Code= (string)p.fldCode,
                    Name=(string)p.fldName
                 }
             );