我有一本价值字典,例如"Name":"Alex“
有没有办法将它作为查询的参数传递给Dapper?
这是一个展示我想要做的事情的例子。
IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);
发布于 2012-02-28 20:17:12
是:
var dbArgs = new DynamicParameters();
foreach(var pair in args) dbArgs.Add(pair.Key, pair.Value);
然后在args
的位置传递dbArgs
var stuff = connection.Query<ExtractionRecord>(query, dbArgs);
或者,您可以编写自己的类来实现IDynamicParameters
。
请注意,如果您从一个对象开始(通常使用dapper的方法),您也可以将此模板与DynamicParameters
一起使用作为起点:
var dbArgs = new DynamicParameters(templateObject);
发布于 2018-10-09 19:13:16
还可以使用ExpandoObject
作为查询的参数,而不是使用特定于Dapper的类DynamicParameters
ExpandoObject param = new ExpandoObject();
IDictionary<string, object> paramAsDict = param as IDictionary<string, object>;
paramAsDict.Add("foo", 42);
paramAsDict.Add("bar", "test");
MyRecord stuff = connection.Query<MyRecord>(query, param);
https://stackoverflow.com/questions/9481678
复制相似问题