2012-10-04 67 views
20

我有簡單的SQL字符串是這樣的:爲中陳述小巧玲瓏AddDynamicParams「動態」參數名

"SELECT * FROM Office WHERE OfficeId IN @Ids" 

的事情是@Ids名稱是在編輯器中輸入所以它可能是什麼,我的問題是,如果我想傳遞的,說一個整數數組,它只能與小巧玲瓏的作品,如果我用:

var values = new DynamicParameters(); 
values.AddDynamicParams(new { Ids = new[] { 100, 101 } }); 

但是這需要我知道,參數名稱是Ids這不是在案件我的場景。

我可以設置一個小巧玲瓏的「動態參數」有了這樣一個「動態」的名字:

var values = new DynamicParameters(); 
values.Add("Ids", new[] { 100, 101 }); 

但隨後小巧玲瓏並不構成IN (....) SQL與每個值單獨的參數。

有沒有一種方法來構造傳遞的動態對象AddDynamicParams但設置成員名稱和值,而不知道名字事先?

我可以修改小巧玲瓏的來源爲我的情況下工作,但如果任何人都知道一個簡單而優雅的解決方案來這個,我將不勝感激!

回答

19

我剛剛提交了修復程序,允許任何以下的正常工作庫:通過對象

(此之前曾):

values.AddDynamicParams(new { ids = list }); 

,或者由單一的名稱:

values.Add("ids", list); 

,或者作爲字典:

var args = new Dictionary<string, object>(); 
args.Add("ids", list); 
values.AddDynamicParams(args); 

我還沒有部署到NuGet。讓我知道這是否是一個問題。

+0

非常感謝馬克!奇蹟般有效! 這就是爲什麼我愛開放源碼..出色的工作! –

+1

@Jaynard meh,你可以在開源和閉源中獲得快速修復。要真正成爲開放源代碼的優勢的例子,你會送我一拉請求修復,P –

+0

呵呵這是真的,我剛開始找過源代碼,但你以壓倒性的優勢擊敗了我吧;) –