Unten finden Sie hochgradig erstellte Instanzen meiner Code-Ergebnisse, die die Angelegenheit zeigen. Ich hoffe, es kommt kein Widerspruch dazu, diese Angelegenheit auszudrücken. Insgesamt hat sich Dapper also nicht mit meinem Code befasst, der eine Zeichenfolge mit Anführungszeichen erstellt hat. Ich benutze die folgende Zeichenfolge als Parameter auf drei verschiedene Arten, spiele nur mit verschiedenen Ansätzen, aber alle scheitern. Alles, was ich möchte, ist eine Zeichenfolge mit '0006', '0011', aber Dapper setzt zur Laufzeit trotzdem zusätzliche Anführungszeichen in die Zeichenfolge.
ALTER PROCEDURE [dbo].[GetEmployeeName] (@EE_Type varchar(40))
AS BEGIN
SELECT PER_Name, EE_Type, StateOfEmployee FROM dbo.Employees WHERE EE_Type in (@EE_Type);
END
Kompiliertes SQL funktioniert nicht so. Sie können keine CSV-Zeichenfolge in einen einzelnen Parameter einfügen und das IN zum Laufen bringen
Falsch:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1)";
cmd.Parameters.Add("@param1", SqlDbParameter.Varchar).Value = "cat,dog,pig";
Es wird nur ein Tier gefunden, dessen Name genau cat,dog,pig
. Es wird die Katze, den Hund und das Schwein nicht finden (3 Reihen)
Recht:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1,@param2,@param3)";
cmd.Parameters.Add("@param1", SqlDbParameter.Varchar).Value = "cat";
cmd.Parameters.Add("@param2", SqlDbParameter.Varchar).Value = "dog";
cmd.Parameters.Add("@param3", SqlDbParameter.Varchar).Value = "pig";
Es ist dasselbe, als ob Sie dies in c # NICHT tun können:
int x = 1;
string add = "x = x + 1";
add; //it will not increment x! It's not a compiled statement, it's just data