Nicht-Parameter-SQL-Variablen mit MySql Connector / Net und Dapper?

7

Der folgende Code generiert den folgenden Fehler:

  

Parameter '@ID' muss definiert sein.

Mache ich etwas falsch oder ist es nicht möglich, Variablen in der SQL-Abfrage mit MySQL zu verwenden, die keine Dapper-Parameter sind?

In diesem Beispiel ist @Slug ein Dapper-Parameter, aber @ID nicht. Ich benutze MySQL, also muss ich @ID nicht definieren - es wird in der ersten Verwendung definiert.

%Vor%     
Mike Gleason 08.02.2012, 02:23
quelle

3 Antworten

18

Es stellt sich heraus, dass "MySql Connector / Net" den Fehler erzeugt.

Um Nichtparameter-SQL-Variablen mit MySql Connector / Net zu verwenden, müssen Sie Ihrer Verbindungszeichenfolge die folgende Option hinzufügen:

  • "Erlaube Benutzervariablen = Wahr"

Siehe: Ссылка

    
Mike Gleason 08.02.2012, 17:52
quelle
2

Ich halte das nicht für ein nettes Problem. dapper nimmt nur die SQL, die Sie anbieten, und fügt alle Mitglieder aus dem "args" -Objekt hinzu, das offensichtlich in der SQL sieht.

Der Weg, dies zu untersuchen, besteht darin, das gleiche mit DbCommand direkt auszuführen - ich schätze, dass es nicht identisch sein wird. Es wird einen SQL-Trick geben, damit es funktioniert, aber das ist zwischen Ihnen und MySQL. Alles, was Dapper macht, ist:

  • Erstellen eines Befehls mit Ihrem SQL
  • definiere einen Parameter namens "Slug" und setze den Wert
  • Aufruf der SQL und Analyse der Ergebnisse

es berührt "ID" nicht, und es ist richtig, dass es nicht tut.

    
Marc Gravell 08.02.2012 08:11
quelle
0

Sie müssen die ID-Variable in Ihrem SQL-Code deklarieren:

%Vor%     
Joel Coehoorn 08.02.2012 02:34
quelle

Tags und Links