1

Normally Dapper queries allow me to do something like this:

string query = "SELECT * FROM some_table WHERE some_value = @MyParameter";
var parameter = new {MyParameter = 20};
connection.Query(query,parameter);

or like this

string query = "SELECT * FROM some_table WHERE some_value = @MyParameter";
var parameter = new DynamicParameters();
parameter.Add("@MyParameter",20);
connection.Query(query,parameter);

This doesn't work with an OdbcConnection because named parameters are not supported. Instead a "?" can be used to mark parameters:

string query = "SELECT * FROM some_table WHERE some_value = ?";
var parameter = new {MyParameter = 20};
connection.Query(query,parameter);

or

string query = "SELECT * FROM some_table WHERE some_value = ?";
var parameter = new DynamicParameters();
parameter.Add("@MyParameter",20);
connection.Query(query,parameter);

This works fine for single parameter, but I cannot find any source telling me what happens with multiple parameters. I've tested the following:

string query = "SELECT * FROM some_table WHERE  some_value > ? AND some_value < ?";
var parameter = new {Min= 20, Max =30};
connection.Query(query,parameter);

or

string query = "SELECT * FROM some_table WHERE some_value > ? AND some_value < ?"
var parameter = new DynamicParameters();
parameter.Add("Min",20);
parameter.Add("Max",30);
connection.Query(query,parameter);

And it works just fine, but I'd like to be certain that the order in which I create anonymous object properties or the order in which I add parameters to the DynamicParameter is guaranteed to be preserved.

0

1 Answer 1

1

Thanks to the comment by Amit Joshi I found that "pseudo positional parameters" can be used

string query = "SELECT * FROM some_table WHERE some_value > ?MinValue? AND some_value < ?MaxValue?"

the order of parameters added to DynamicParameters or an anonymous object then no longer matter.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.