Я знаю, что это старый вопрос (например, , 5 лет), но я боролся с тем же. Полный ответ в комментариях к другому ответу, но я думал, что предлагаю здесь полный пример.
string query = "SELECT * FROM MyTableName WHERE Foo = @Foo AND Bar = @Bar";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Foo", "foo");
dictionary.Add("@Bar", "bar");
var results = connection.Query<MyTableName>(query, new DynamicParameters(dictionary));
Или, чтобы быть полностью динамическим, вы можете создать метод, как это, который будет принимать любую модель, любой запрос, и любой набор параметров запроса:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
А потом назвать это метод:
var results = Get<MyTable>(query, dictionary)
Обратите внимание, что вы можете использовать 'new DynamicParameters (dictionary)', и он будет работать нормально. – asgerhallas
@asgerhallas, который, возможно, не был прав в феврале, но да: вы правы - это, безусловно, верно сейчас –
, чтобы работать с новыми динамическими параметрами (словарь), словарь должен быть IEnumerable> , например Dictionary . Словарь <строка, строка> не работает. –