Dapper.NET Esecuzione di operazioni su più insiemi di input

Esempio

A volte, vuoi fare la stessa cosa più volte. Dapper supporta questo metodo nel metodo Execute se il parametro più esterno (che di solito è un singolo tipo anonimo o un'istanza del modello di dominio) viene effettivamente fornito come una sequenza IEnumerable . Per esempio:

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

Qui, dapper sta facendo un semplice ciclo sui nostri dati, essenzialmente come se avessimo fatto:

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

Questo utilizzo diventa particolarmente interessante quando combinato con l'API async su una connessione che è esplicitamente configurata per tutti i "Multiple Active Result Set" - in questo utilizzo, dapper eseguirà automaticamente la pipeline delle operazioni, quindi non si paga il costo di latenza per riga. Ciò richiede un utilizzo leggermente più complicato,

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

Si noti, tuttavia, che si potrebbe anche voler esaminare i parametri valutati in tabella.