针对多组输入执行操作
有时候,你想多次做同样的事情。如果最外面的参数(通常是单个匿名类型,或域模型实例)实际上作为 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))
但请注意,你可能还希望调查表值参数。