Comment échapper un '@' dans une requête Dapper?

dapper sql-server tsql

Question

J'ai une requête qui devrait contenir un littéral au signe ( @ ). Comment puis-je exprimer cela avec une requête Dapper?

var num = cnx.Query<int>("declare @foo int = 2; select @foo").Single();

J'ai essayé d'utiliser des littéraux comme solution de contournement:

var num = cnx.Query<int>(
    "declare {=at}foo int = 2; select {=at}foo", new { at = "@" }
).Single();

Mais cela génère une NotSupportedException puisque les littéraux de chaîne ne sont pas supportés ...

(Notez que dans mon code réel, j'ai d'autres paramètres que je souhaite remplacer et échapper automatiquement pour moi, alors je préfère continuer avec Dapper si possible, au lieu d'utiliser simplement une SqlCommand .)

Réponse acceptée

Oh. Je l'ai compris. Si vous avez un @param qui n'est lié à rien, il est transmis tel quel au SqlCommand sous-jacent, qui le transmet directement à la base de données.

En d'autres termes, vous n'avez rien de spécial à faire pour que cela fonctionne. Mon premier exemple devrait bien se passer. Que je suis bête.



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