我有一个List<Guid>
(也尝试过使用普通数组),我想在查询中使用它。Dapper 生成 SQL 并将参数替换为正确的编号参数。但是,PG 抱怨 list 参数的语法。没有给出进一步的细节。复制生成的 SQL 并用实际值替换数字(将括号添加到列表参数),查询工作。
这是生成的 SQL 中的违规子句:
WHERE (
names.tenant = $1
AND scan_results.tenant = $1
AND scan_results.scan IN $2
)
Dapper 的原始语句字符串是这样的:
WHERE (
file_names.tenant = @tenantId
AND scan_results.tenant = @tenantId
AND scan_results.scan IN @validScans
)
查询是con.Query
这样执行的:
con.Query(stmt, new
{
tenantId = tenant.Id,
validScans = tenant.LatestScans // .ToArray()
});
确切的 Postgres 错误是:
ERROR: syntax error at or near "$2" at character ...