如何动态地创建参数为一个精致小巧查询 [英] How to create arguments for a Dapper query dynamically

查看:233
本文介绍了如何动态地创建参数为一个精致小巧查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

 的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);

这篇关于如何动态地创建参数为一个精致小巧查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆