Erreur de retour de requête Dapper

asp.net-web-api2 dapper

Question

Je travaille sur l'API Web MVC avec Dapper version 1.38.0.0. J'écris ce code

 var param = new Dapper.DynamicParameters();
 foreach (Match match in Regex.Matches("Select Top @count * From tblCourse", @"(?<!\w)@\w+"))
 {
     string key = match.Value;
     string value = HttpContext.Current.Request.QueryString[key.Replace("@", null)];
     param.Add(key, value);
 }

 result = con.Query<dynamic>("Select Top @count * From tblCourse", param);

Mais j'ai une erreur sur la ligne du résultat.

Additional information: Incorrect syntax near '@count'.

Comment puis-je résoudre ce problème? Merci.

Réponse acceptée

TOP @param

N'est pas légal sur le serveur SQL. 2 options:

Select Top (@count) * From tblCourse

Ou

Select Top {=count} * From tblCourse

Le premier est la façon dont SQL-server représente cela. La seconde est une fonctionnalité spécifique à Dapper qui injecte des valeurs entières (uniquement: cela ne fonctionne pas pour les chaînes) directement dans la requête. Si la valeur est généralement la même, la seconde sera généralement plus performante. Bien sûr, avec la seconde, vous auriez besoin d'une expression rationnelle différente.


Réponse populaire

Essaye ça

result = con.Query<dynamic>("Select Top (@count) * From tblCourse", param);

Top doit être entre parenthèses lorsque sa valeur est fournie via un paramètre




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