在我的代碼,我重複這樣的代碼塊的所有時間:用C#中可變數量的參數調用GetStoredProcCommand?
var returnData = MyDb.ExecuteDataSet(
MyDb.GetStoredProcCommand("MyTable_Insert", columnOne, columnTwo, columnThree),
transaction
);
var returnId = (int)returnData.Tables[0].Rows[0]["INSERTED_ID"];
在我看來這是一個代碼相當大段要重複很多次,但我不知道如何將其推廣到一個方法中,因爲參數的數量與每個存儲過程不同。
顯而易見的解決方案(我)是通過通過我的參數給函數在一個數組,然後展開他們叫GetStoredProcCommand
,但我不能找到一個方法來做到這一點:
private int CallStoredProcedure(string procName, List<dynamic> parameterValues) {
..
MyDb.GetStoredProcCommand(procName, expand parameterValues);
// ERROR: Obviously "expand" doesn't exist
..
}
我可以用傳遞使用AddInParameter
參數不再囉嗦的方式,但我需要與參數值一起傳遞類型信息:
private int CallStoredProcedure(string procName, IDictionary<DbType, IDictionary<string, string>> paramsKeyValuesByType) {
..
MyDb.AddInParameter(myProcCommand, param.Value.Key, param.Key, param.Value.Value);
..
}
但後來我不得不調用方法之前構建IDictionary
對象這將比我原來的程序更加冗長。
任何人都可以想到一個優雅的解決方案呢?
,你爲什麼不只是使用可變參數,以及在'CallStoredProcedure'?變量參數存儲在一個數組中,可以直接傳遞而不是展開列表。 – mellamokb
你確定你的意思是'dynamic'而不是'object'嗎? –