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);
I know this is an old question (like, 5 years old) but I was struggling with the same thing. The complete answer is in the comments to the other answer, but I thought I would offer a full example here.
Or, to be fully dynamic, you can create a method like this, which will take any model, any query, and any set of query parameters:
And then to call this method:
One can also use an
ExpandoObject
as the parameters of a query, instead of the Dapper-specific classDynamicParameters
:Yes:
Then pass
dbArgs
in place ofargs
: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: