Dapper - QuerySingleOrDefault
Descripción
El método QuerySingleOrDefault es un método de extensión que se puede llamar desde cualquier objeto de tipo IDbConnection. Puede ejecutar una consulta y asignar el primer resultado, o un valor predeterminado si la secuencia está vacía; este método lanza una excepción si hay más de un elemento en la secuencia.
El resultado se puede asignar a:
Parámetros
La siguiente tabla muestra diferentes parámetros de un método QuerySingleOrDefault.
Nombre | Descripción |
---|---|
sql | La consulta a ejecutar. |
param | Los parámetros de consulta (por defecto = nulo). |
transacción | La transacción a utilizar (por defecto = nulo). |
commandTimeout | El tiempo de espera del comando (predeterminado = nulo) |
commandType | El tipo de comando (por defecto = nulo) |
Primero, Individual y Predeterminado
Tenga cuidado de usar el método correcto. Los métodos First & Single son muy diferentes.
Resultado | Sin objeto | Un item | Muchos artículos |
---|---|---|---|
primero | Excepción | ít | Primer elemento |
Soltero | Excepción | ít | Excepción |
FirstOrDefault | Defecto | ít | Primer elemento |
SingleOrDefault | Defecto | ít | Excepción |
Ejemplo - Consulta Anónima
Ejecute una consulta y asigne el primer resultado a una lista dinámica, o un valor predeterminado si la secuencia está vacía; este método lanza una excepción si hay más de un elemento en la secuencia.
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QuerySingleOrDefault(sql, new {OrderDetailID = 1});
FiddleHelper.WriteTable(orderDetail);
}
include component-try-it.html href = 'https: //dotnetfiddle.net/nYmbCo'%}
Ejemplo: consulta fuertemente tipada
Ejecute una consulta y asigne el primer resultado a una lista fuertemente tipada, o un valor predeterminado si la secuencia está vacía; este método lanza una excepción si hay más de un elemento en la secuencia.
string sql = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
using (var connection = new SqlCeConnection("Data Source=SqlCe_W3Schools.sdf"))
{
var orderDetail = connection.QuerySingleOrDefault<OrderDetail>(sql, new {OrderDetailID = 1});
FiddleHelper.WriteTable(new List<OrderDetail>() { orderDetail });
}
include component-try-it.html href = 'https: //dotnetfiddle.net/kFMKnL'%}