Я пытаюсь запустить запрос с Dapper с известным набором параметров, но со списком значений для этих параметров. Простым примером того, что я пытаюсь сделать, будет:
DateTime endDate = DateTime.Now;
DateTime startDate = endDate.AddHours(-24);
string query = "select COUNT(*) from Test where Status = @Status AND DateCreated <= @Hour;";
var stuff = con.Query(query, (startDate).ByHourTo(endDate).Select(hour => new
{
Status = 1,
Hour = hour,
}));
Dapper выдает исключение с параметром '@Status', который должен быть определен. Я знаю, что Dapper может обрабатывать списки параметров при выполнении массовых вставок и обновлений, но не может ли это сделать для выбора?
Ах, думаю, я понимаю, что вы имеете в виду ...
Да, существует сценарий поддержки Execute
который не поддерживается для Query, в частности: для выполнения той же операции последовательно с диапазоном различных значений параметров. Это имеет смысл для Execute
, но для запроса это , вероятно , означает , что вы должны искать в другом запросе , используя in
. Альтернативно, просто петля и concat.
Вместо этого он просматривает объект с одним параметром и ищет общедоступные значения. Перечислимый не имеет подходящих значений параметров для dapper.
Попробуй это:
List<string> names = new List<string> { "Bob", "Fred", "Jack" };
string query = "select * from people where Name in @names";
var stuff = connection.Query<ExtractionRecord>(query, new {names});