Ich habe eine einfache SQL-Zeichenfolge wie folgt:
"SELECT * FROM Office WHERE OfficeId IN @Ids"
Die Sache ist, dass der @Ids-Name in einem Editor eingegeben wird, so dass es was auch immer sein könnte, und mein Problem ist, dass, wenn ich ein Array von ganzen Zahlen übergeben möchte, es nur mit Dapper funktioniert, wenn ich verwende:
var values = new DynamicParameters();
values.AddDynamicParams(new { Ids = new[] { 100, 101 } });
Aber das erfordert, dass ich weiß, dass der Parametername Ids
und das ist in meinem Szenario nicht der Fall.
Ich kann einen "dynamischen Parameter" in Dapper mit einem "dynamischen" Namen wie folgt setzen:
var values = new DynamicParameters();
values.Add("Ids", new[] { 100, 101 });
Aber dann erstellt Dapper die IN (....)
SQL nicht mit separaten Parametern für jeden Wert.
Gibt es eine Möglichkeit, das dynamische Objekt zu AddDynamicParams
, das an AddDynamicParams
aber den Namen und den Wert des AddDynamicParams
, ohne vorher den Namen zu kennen?
Ich könnte die Dapper-Quelle modifizieren, um für mein Szenario zu arbeiten, aber wenn jemand von einer einfacheren und eleganteren Lösung dafür weiß, wäre ich dankbar!
Ich habe gerade eine Korrektur an das Repository gesendet, die Folgendes zulässt:
nach Objekt (das hat vorher funktioniert):
values.AddDynamicParams(new { ids = list });
oder, mit einem einzigen Namen:
values.Add("ids", list);
oder als Wörterbuch:
var args = new Dictionary<string, object>();
args.Add("ids", list);
values.AddDynamicParams(args);
Ich habe noch nicht bei NuGet eingesetzt. Lass es mich wissen, wenn das ein Problem ist.