Saltar al contenido

Cómo recuperar un solo valor de la base de datos usando Dapper

Después de mucho trabajar ya dimos con la contestación de esta dificultad que agunos usuarios de este espacio han tenido. Si tienes alguna información que compartir no dejes de aportar tu información.

Solución:

O puedes usar ExecuteScalarAsync o Single()
con ExecuteScalarAsync puede recuperar un solo valor de la base de datos usando Dapper.

short status;
using (var sqlConnection = new SqlConnection(connectionString))

  var parameters = new DynamicParameters();
  parameters.Add("@ID", ID, DbType.Int32, ParameterDirection.Input);

  await sqlConnection.OpenAsync();
  status = await sqlConnection.ExecuteScalarAsync("SELECT [StatusID] FROM     [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds);

Single() se puede usar de esta manera

short status;
using (var sqlConnection = new SqlConnection(connectionString))

  var parameters = new DynamicParameters();
  parameters.Add("@ID", ID, DbType.Int32, ParameterDirection.Input);

  await sqlConnection.OpenAsync();
  status = await sqlConnection.QueryAsync("SELECT [StatusID] FROM [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds).Single();

FYI, Dapper ahora ha agregado ambos QuerySingle y QuerySingleAsync así como sus correspondientes OrDefault variantes… uso para QuerySingleOrDefaultAsync es:

await connection.QuerySingleOrDefaultAsync(sql);

Deberías usar ExecuteScalar:

status = await sqlConnection.ExecuteScalarAsync("SELECT [StatusID] FROM [MyTable] WHERE [ID] = @ID", parameters, commandTimeout: _sqlCommandTimeoutInSeconds)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *