У меня есть функция, прототип которой выглядит примерно так: 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
или myval3
и так далее. Есть ли какой-то особый способ, которым я должен передавать ExpandoObject
, или какой-то другой способ, которым я должен это делать в целом?