2017-08-24 1 views
0

Ich kann nicht herausfinden, wie ein List<Guid> als Parameter in meiner Abfrage verwenden. Ich habe seit einiger Zeit in verschiedenen Situationen Probleme damit gehabt, aber hier ist der aktuelle. Ich versuche, nach den Tests zu bereinigen, indem ich alles lösche, das von einem Testbenutzer erstellt wurde. Hier ist der Code:Wie verwende ich ordnungsgemäß eine Liste als Parameter mit Npgsql und Dapper

var idList = new List<Guid>() { SYS_ADMIN_GUID, OPERATOR_GUID, OPERATOR_ELECTRONICS_TECH_GUID, UNIT_MANAGER_GUID, AREA_MANAGER_GUID }; 

using (NpgsqlConnection c = new NpgsqlConnection(TestHelper.ConnectionString)) 
{ 
    c.Open(); 

    c.Execute(@"delete from ""BlueStakes"".""MarkRequestStatuses"" where ""CreatedById"" in :idList", new { idList }); 
} 

Ich habe auch versucht, @idList als Parameter verwendet werden, die nicht funktioniert entweder. Dies ist der Fehler, dass es zu geben:

Npgsql.PostgresException: Npgsql.PostgresException: 42601: syntax error at or near "$1"

Offensichtlich ist die Abfrage nicht die Liste zu erkennen und sie in für die Parameter kleben, aber ich kann nicht herausfinden, warum.

Antwort

1

Sie können IN nicht mit einer Liste in PostgreSQL verwenden. Verwenden Sie die folgende Syntax, um zu überprüfen, ob ein Element in einer Liste vorhanden ist: WHERE "CreatedById" = ANY (:idList).

+0

Hier ist die Dokumentation für das, was Sie für zukünftige Ressourcen sagen: https://www.postgresql.org/docs/current/static/functions-comparisons.html – GBreen12

Verwandte Themen