【发布时间】:2023-03-27 14:45:01
【问题描述】:
这可能与SELECT * FROM X WHERE id IN (...) with Dapper ORM 重复
我正在努力实现:
connection.execute("delete from table where id in @ids", new { ids = new int[]{1,2}});
但它不起作用。我总是得到:错误:42883:运算符不存在:整数=整数[]。
即使我这样做:
connection.Query<a>("select * from a where a_id in @ids", new { ids = new int[] { 12, 13 } })
我得到了同样的例外。 我正在使用 Npgsql 访问 postgresql 数据库。 你能告诉我我做错了什么吗?
这是第二条语句在数据库中发生的情况:
这是第二条语句的一些日志:
运算符不存在:integer = integer[] at character 33
没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。
select * from a where a_id in ((array[12,13])::int4[])
这是第一个(与上面相同,但最后一行不同)
从 where a_id in ((array[12,13])::int4[]) 中删除
【问题讨论】:
-
这真的很奇怪......我看不出你的 c# 有什么问题。您是否对服务器的实际访问有 SQL 跟踪?
-
我已经用数据库中的一些语句更新了这个问题
-
这是我最近几天看到的第二份报告......我强烈怀疑实际上是特定的 ado.net 提供程序(postgres)在这样做,因为根本不是我们生成的 TSQL...我将不得不调查
-
非常感谢,同时,我会将该功能置于待机状态。你能指出我在哪里可以找到调查的进展吗?
-
相关:stackoverflow.com/questions/25297173/…。可能需要
where id = ANY @ids
标签: sql postgresql dapper in-clause