针对多组输入执行操作

有时候,你想多次做同样的事情。如果最外面的参数(通常是单个匿名类型,或域模型实例)实际上作为 IEnumerable 序列提供,则 Dapper 在 Execute 方法上支持此操作。例如:

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

在这里,dapper 只是对我们的数据做了一个简单的循环,基本上和我们做的一样:

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

当在显式配置为所有多个活动结果集的连接上与 async API 结合使用时,此用法变得特别有趣 - 在此用法中,dapper 将自动管道操作,因此你不需要支付每行的延迟成本。这需要稍微复杂的使用,

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

但请注意,你可能还希望调查表值参数。