針對多組輸入執行操作

有時候,你想多次做同樣的事情。如果最外面的引數(通常是單個匿名型別,或域模型例項)實際上作為 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))

但請注意,你可能還希望調查表值引數。