为什么我不能在 Dapper 中覆盖 statement_timeout?

Why can't I override statement_timeout in Dapper?

我像这样全局设置了 postgresql 语句超时:

ALTER ROLE user SET statement_timeout = '10s';

当我有一个很长的 运行 查询时,我可以像这样覆盖超时,它在我的数据库中工作正常 IDE:

SET statement_timeout TO '0';
SELECT pg_sleep(20);

但是当我从 Dapper 执行同样的事情时它抛出异常:

57014: canceling statement due to statement timeout

如何让它在 Dapper 中工作?

statement_timeout 设置仅从通过网络发送的下一条语句开始生效。我的 IDE 一条一条地发送多个语句,而 Dapper 一次往返发送它们。所以为了解决这个问题,我不得不把它分成 2 个 Execute 调用:

c.Execute("SET statement_timeout TO '0';");
c.Execute("SELECT pg_sleep(20);");

顺便说一下,SET 应用于会话,而 SET LOCAL 应用于事务。