如何正确使用列表作为 Npgsql 和 Dapper 的参数
How do I properly use a List as a parameter with Npgsql and Dapper
我不知道如何在我的查询中使用 List<Guid>
作为参数。在不同的情况下,我在这方面遇到了一段时间的麻烦,但这是目前的情况。我正在尝试通过删除测试用户创建的所有内容来在测试后进行清理。这是代码:
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 });
}
我也试过使用@idList
作为参数,但也没用。这是它给出的错误:
Npgsql.PostgresException: Npgsql.PostgresException: 42601: syntax error at or near ""
显然查询无法识别列表并将其粘贴到参数中,但我不明白为什么。
您不能将 IN
与 PostgreSQL 中的列表一起使用。要检查列表中是否存在某个元素,请使用以下语法:WHERE "CreatedById" = ANY (:idList)
.
我不知道如何在我的查询中使用 List<Guid>
作为参数。在不同的情况下,我在这方面遇到了一段时间的麻烦,但这是目前的情况。我正在尝试通过删除测试用户创建的所有内容来在测试后进行清理。这是代码:
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 });
}
我也试过使用@idList
作为参数,但也没用。这是它给出的错误:
Npgsql.PostgresException: Npgsql.PostgresException: 42601: syntax error at or near ""
显然查询无法识别列表并将其粘贴到参数中,但我不明白为什么。
您不能将 IN
与 PostgreSQL 中的列表一起使用。要检查列表中是否存在某个元素,请使用以下语法:WHERE "CreatedById" = ANY (:idList)
.