I는 다음과 같이 항상 코드 블록을 반복하고있다 :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
'object'가 아닌'dynamic'을 원하십니까? –