如何动态地创建参数为一个精致小巧查询小巧、精致、参数、动态

2023-09-02 12:02:37 作者:再不努力我们就要老了

我的价值观例如名称一本字典:亚历克斯

有没有办法通过这个以精致小巧的作为参数的查询?

下面是一个例子,显示了我想做的事情。

 的IDictionary<字符串,字符串>的args = GetArgsFromSomewhere();
查询字符串=SELECT * FROM人,其中名称= @Name;
VAR的东西= connection.Query< ExtractionRecord>(查询,参数);
 

解决方案

是:

  VAR dbArgs =新DynamicParameters();
的foreach(VAR对在args)dbArgs.Add(pair.Key,pair.Value);
 
建这样一栋精致小巧现代别墅,开启浪漫度假生活

然后通过 dbArgs 的args

  VAR的东西= connection.Query< ExtractionRecord>(查询,dbArgs);
 

另外,你可以写自己的类实现 IDynamicParameters

请注意,如果你是从一个对象(与短小精悍通常的做法)开始,你也可以使用这个模板 DynamicParameters 为出发点:

  VAR dbArgs =新DynamicParameters(templateObject);
 

I have a dictionary of values Eg "Name": "Alex"

Is there a way to pass this to Dapper as arguments for a query?

Here is an example showing what I want to do.

IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);

解决方案

Yes:

var dbArgs = new DynamicParameters();
foreach(var pair in args) dbArgs.Add(pair.Key, pair.Value);

Then pass dbArgs in place of args:

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

Alternatively, you can write your own class that implements IDynamicParameters.

Note that if you are starting from an object (the usual approach with dapper), you can also use this template with DynamicParameters as a starting point:

var dbArgs = new DynamicParameters(templateObject);