Buscar..


Sintaxis

  • Consulta <T> IEnumerable estática pública (esta IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)
  • Consulta estática pública IEnumerable <dynamic> (este IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)

Parámetros

Parámetro Detalles
cnn Su conexión de base de datos, que ya debe estar abierta.
sql Comando para ejecutar.
param Objeto para extraer parámetros de.
transacción Transacción de la que forma parte esta consulta, si la hubiera.
amortiguado Ya sea para almacenar o no los resultados de la consulta. Este es un parámetro opcional con el valor predeterminado verdadero. Cuando el búfer es verdadero, los resultados se guardan en una List<T> y luego se devuelven como IEnumerable<T> que es seguro para la enumeración múltiple. Cuando el búfer es falso, la conexión SQL se mantiene abierta hasta que finalice la lectura, lo que le permite procesar una sola fila en el momento en la memoria. Las enumeraciones múltiples generarán conexiones adicionales a la base de datos. Si bien el búfer falso es altamente eficiente para reducir el uso de memoria, si solo mantiene fragmentos muy pequeños de los registros devueltos, tiene una sobrecarga de rendimiento considerable en comparación con materializar con impaciencia el conjunto de resultados. Por último, si tiene numerosas conexiones de SQL no búfer concurrentes, debe considerar que la inanición de la agrupación de conexiones provoca que las solicitudes se bloqueen hasta que las conexiones estén disponibles.

Buscando un tipo estático

Para los tipos conocidos en tiempo de compilación, use un parámetro genérico con Query<T> .

public class Dog
{
    public int? Age { get; set; }
    public Guid Id { get; set; }
    public string Name { get; set; }
    public float? Weight { get; set; }

    public int IgnoredProperty { get { return 1; } }
}    

//
IDBConnection db = /* ... */;

var @params = new { age = 3 };
var sql = "SELECT * FROM dbo.Dogs WHERE Age = @age";

IEnumerable<Dog> dogs = db.Query<Dog>(sql, @params);

Consultando por tipos dinámicos

También puede consultar dinámicamente si deja de lado el tipo genérico.

IDBConnection db = /* ... */;
IEnumerable<dynamic> result = db.Query("SELECT 1 as A, 2 as B");

var first = result.First();
int a = (int)first.A; // 1
int b = (int)first.B; // 2

Consulta con parámetros dinámicos

var color = "Black";
var age = 4;

var query = "Select * from Cats where Color = :Color and Age > :Age";
var dynamicParameters = new DynamicParameters();
dynamicParameters.Add("Color", color);
dynamicParameters.Add("Age", age);

using (var connection = new SqlConnection(/* Your Connection String Here */))
{
    IEnumerable<dynamic> results = connection.Query(query, dynamicParameters);
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow