c # Dapper - usando linq en el método QueryAsync

Sep 01 2020

¿Por qué no puedo usar .select en un queryAsync cuando funciona bien en Query? Por ejemplo, aquí el .select me grita diciéndome que no puede resolver el símbolo "seleccionar":

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

pero tan pronto como cambio a Query, ya no grita. en todo caso, tiene problemas para resolver las columnas fldCode del sp:

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

¿Por qué es esto?

Hice una pregunta anterior aquí C # Dapper mapeo columnas a propiedades de entidad - "No se puede resolver el símbolo 'Seleccionar'"

Respuestas

1 Milney Sep 01 2020 at 09:06

Los métodos asíncronos devuelven una tarea (básicamente un marcador de posición para el resultado final de la acción asíncrona). Debe esperarlo para obtener el valor real.

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