Dapper.NET Realizar operaciones contra múltiples conjuntos de entrada


Ejemplo

A veces, quieres hacer lo mismo varias veces. Dapper admite esto en el método de Execute si el parámetro más externo (que generalmente es un solo tipo anónimo o una instancia de modelo de dominio) en realidad se proporciona como una secuencia IEnumerable . Por ejemplo:

Order[] orders = ...
// update the totals
connection.Execute("update Orders set Total=@Total where Id=@Id", orders);

Aquí, Dapper solo está haciendo un simple bucle en nuestros datos, esencialmente como si hubiéramos hecho:

Order[] orders = ...
// update the totals
foreach(Order order in orders) {
    connection.Execute("update Orders set Total=@Total where Id=@Id", order);
}

Este uso se vuelve particularmente interesante cuando se combina con la API async en una conexión que está configurada explícitamente para todos los "Conjuntos de resultados activos múltiples". En este uso, Dapper canalizará las operaciones automáticamente, por lo que no está pagando el costo de latencia por fila. Esto requiere un uso un poco más complicado,

await connection.ExecuteAsync(
    new CommandDefinition(
        "update Orders set Total=@Total where Id=@Id", 
         orders, flags: CommandFlags.Pipelined))

Sin embargo, tenga en cuenta que es posible que también desee investigar los parámetros con valores de tabla.