2012-10-04 41 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

呵呵这是真的,我刚开始找过源代码,但你以压倒性的优势击败了我吧;) –