我有一些函数的原型看起来像这样:
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()
和写入该new
块十次,在这些场景中我可能想要查询myval2
ormyval3
等等。是否有一些特殊的方式我应该通过ExpandoObject
,或者我应该以其他方式来做这个?