[英]Dapper.Net - QueryMultiple use with stored procedure returning multiple results
[英]How can I use Dapper's QueryMultiple with a stored procedure, but with a different parameter value each time?
我想用Dapper批量調用存儲過程。 每個調用將返回不同的結果集,因此我使用的是QueryMultiple。 如果我創建這樣的參數:
var parameters = new DynamicParameters();
// The stored proc accepts a single integer, but I want to pass multiple so each call had a new value.
parameters.Add("LookupID", lookupIds);
var resultSet = connection.QueryMultiple("SPName", parameters, commandType: System.Data.CommandType.StoredProcedure);
我收到一個錯誤,指出存儲過程指定了太多參數。 那我還能怎么做呢?
QueryMultiple
與結果有關,而不是輸入。 要執行您想要的操作,您需要多次調用SP。 您可以自己通過簡單的foreach
循環執行,也可以通過很多(並非全部)dapper方法通過將IEnumerable<T>
作為最外層對象傳遞來提供一種便捷方法,例如:
int[] ids = ...
var args = ids.Select(id => new { id, val = "ABC" });
db.Execute("whatever", args);
它將為每個項目傳遞一次@id
和@val
一次執行SQL。 對於async
API,它也可以與MARS結合使用,以消除調用之間的延遲成本,但這是可選的,因為MARS不是默認選項。
或者,您可以編寫一個新的包裝SP,該包裝采用一個參數並將其拆分(新的string_split
將是理想選擇),然后在服務器上執行循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.