c# – 使用ExpandoObject传递动态参数
作者:互联网
我有一些函数,其原型看起来像这样:
public void doThings(string sql,dynamic dParams);
它使用这些参数进行某种SQL查询.我没有写它,但我必须使用它.当我做这样的事情时它工作正常:
doThings("select * from SomeTable where myval1=@v1 and myval2=@v2",
new
{
v1 = new Dapper.DbString()
{
Value = "yay",
IsAnsi = true,
Length = 50
},
v2 = new Dapper.DbString()
{
Value = "really",
IsAnsi = true,
Length = 32
}
});
但是当我第一次将动态参数放入ExpandoObject时:
dynamic dynParams = new ExpandoObject();
dynParams.v1 = new Dapper.DbString()
{
Value = "yay",
IsAnsi = true,
Length = 50
}
doThings("query here", dynParams);
然后查询不返回任何结果.我不想调用doThings()并为十个不同的场景写入新的块十次,我可能想查询myval2或myval3等等.是否有一些特殊方式我应该通过ExpandoObject,或者其他一些方式我应该这样做一般?
解决方法:
默认情况下,Dapper不支持Expandos,但您可以将expando传递给Dictionary< string,object>的构造函数.然后将其作为动态参数传递.
标签:c,parameter-passing,sql,dynamic,expandoobject 来源: https://codeday.me/bug/20190520/1141497.html