Dapper.NET 针对多组输入执行操作

示例

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

Order[] orders = ...
// 更新总数
connection.Execute("update Orders set Total=@Total where Id=@Id", orders);

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

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

当在显式配置为所有“多个活动结果集”的连接上与API结合使用时,这种用法特别有趣async-在这种用法中,dapper会自动通过管道传递操作,因此您不必支付每行的延迟成本。这需要稍微复杂一点的用法,

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

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