zu Nikhil Antwort hinzuzufügen, es möglich ist, und die Ressourcen, die er zitiert sind hilfreich, aber die Parametrisierung Artikel könnten ein wenig irreführend, sind ich einen Ausschnitt umfassen würde, dass ich nur für den Fall hätte Arbeit, es hilft. Sie müssen nicht ein DECLARE @ SSN ... in Ihrem SQL verwenden, wie Sie es in SSMS tun würden, der Schlag funktioniert gut für mich, sobald ich meine Probleme mit dem Typ behoben habe (siehe Absatz nach dem Codeblock).
string sql = "SELECT * from dob.ExampleTable WHERE IsActive = 1 SSN = @SSN";
var results = await this.DbConnection.QueryAsync(sql, new
{
SSN = 999999999
});
Achten Sie auch auf nicht übereinstimmende Datentypen. Ich konnte Char- oder Varchar-Arbeit nicht als Zieltyp für meine SSN-Spalte mit Dapper verwenden (ich konnte gerade ADO.NET explizit als CHAR oder VARCHAR konfigurieren, aber Dapper scheint NVARCHAR (4000) für alle Zeichenfolge zu übernehmen) Felder, die mit Dapper zu einem Fehler geführt haben). NVARCHAR und NCHAR haben gut funktioniert. Ich denke, es hat etwas damit zu tun, dass beim Verschlüsseln der Spalte der "echte" Datentyp in NCHAR (50) geändert wird und etwas über die Konvertierung von dapper aus nvarchar (4000) => CHAR (9) => NCHAR (50) funktionierte nicht, sondern nur in Dapper.