Requête Dapper avec liste de paramètres

c# dapper database mysql

Question

J'essaie d'exécuter une requête avec Dapper avec un ensemble connu de paramètres, mais avec une liste de valeurs pour ces paramètres. Un exemple simple de ce que j'essaie de faire serait:

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 lance une exception avec 'Parameter' @Status 'doit être défini'. Je sais que Dapper peut traiter des listes de paramètres lors des insertions en vrac et des mises à jour, mais ne peut-il pas le faire pour les sélections?

Réponse acceptée

Ah, je pense que je vois ce que tu veux dire ...

Oui, il existe un scénario que nous prenons en charge pour Execute qui n'est pas pris en charge pour Query, en particulier: pour exécuter la même opération de manière séquentielle avec une plage de valeurs de paramètres différentes. Cela a du sens pour Execute , mais pour la requête, cela signifie probablement que vous devriez regarder une requête différente en utilisant in . Alternativement, il suffit de boucler et de concaténer.

Au lieu de cela, il examine l'objet de paramètre unique et recherche des valeurs publiques - un énumérable n'a aucune valeur de paramètre appropriée pour dapper.


Réponse populaire

Essaye ça:

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi