2012-04-24 84 views
3

我正在調用一個foreach循環中的存儲過程,並且想要在每次迭代中更改其中一個參數的值。目前,一旦將參數添加到DynamicParameters中,似乎沒有任何方法可以訪問這些參數,但通過閱讀源代碼,我可以看到DynamicParameters確實保留了一個內部Dictionary。爲什麼這不是公開的,或者如果有另一種方法讓ParamInfos改變值呢?添加到DynamicParameters後更改ParamInfo的值?

更新

我現在什麼:

foreach (var fooID in fooIDs) 
{ 
    var dynamicParameters = new DynamicParameters(); 
    dynamicParameters.Add(ParameterNames.BarID, barID); 
    dynamicParameters.Add(ParameterNames.FooID, fooID); 

    connection.Execute(ProcNames.MyProc, dynamicParameters, commandType:CommandType.StoredProcedure); 
} 
+0

http://stackoverflow.com/questions/10501319/is-there-anyway-to-iterate-through-a-dapper-dynamicparameters-object? – 2012-05-09 06:16:22

+1

山姆,我更新了我現在正在做的事(有效)。我想要做的是在循環外聲明並實例化DynamicParameters,然後在每次調用存儲過程之前更新其中一個參數。這是你的鏈接中的例子在做什麼?謝謝。 – alimbada 2012-05-10 09:29:21

回答

2

有沒有真正的理由DynamicParameters是如此祕密有關它做什麼,在ParamInfo類可能會暴露,我會很樂意提供適當的迭代/修改屬性和/或方法。如果您覺得您想要參與,請提交補丁。

與此同時,您可以簡單地實現IDynamicParameters這是我們用來將此分派到底層命令的簡單接口,在您的應用程序中。您可以使用DynamicParameters作爲起點。