【发布时间】:2013-09-30 00:40:01
【问题描述】:
我有一些原型看起来像这样的函数:
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 等的十个不同场景写十次new 块。是否有一些特殊的方式我应该通过ExpandoObject,或者我应该以其他方式来做这个?
【问题讨论】:
标签: c# sql dynamic parameter-passing expandoobject