針對多組輸入執行操作
有時候,你想多次做同樣的事情。如果最外面的引數(通常是單個匿名型別,或域模型例項)實際上作為 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))
但請注意,你可能還希望調查表值引數。