Dapper.NET Effectuer des opérations contre plusieurs ensembles d'entrées


Exemple

Parfois, vous voulez faire la même chose plusieurs fois. Dapper prend cela en charge sur la méthode Execute si le paramètre le plus à l' extérieur (qui est généralement un seul type anonyme ou une instance de modèle de domaine) est réellement fourni sous la forme d'une séquence IEnumerable . Par exemple:

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

Ici, dapper ne fait qu'une simple boucle sur nos données, essentiellement comme si nous l'avions fait:

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

Cette utilisation devient particulièrement intéressante lorsqu'elle est associée à l'API async sur une connexion explicitement configurée pour tous les "multiples ensembles de résultats actifs". Dans cette utilisation, dapper va automatiquement canaliser les opérations, vous ne payez donc pas le coût de latence par ligne. Cela nécessite une utilisation légèrement plus compliquée,

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

Notez, cependant, que vous pourriez également vouloir examiner des paramètres de valeur de table.