Dapper:如何取消异步非缓冲查询?

Dapper: How to cancel an async non-buffered query?

使用 Dapper 的 SqlMapper.QueryAsync<T> 方法在 gRPC API.

测试 API 客户端 dies/disconnects 时的场景,非缓冲查询在数据库上保持活动状态,直到完全执行,即使调用服务不再使用结果,这是在浪费宝贵的数据库资源。
查看 QueryAsync 代码,取消令牌(在 API 客户端 death/disconnect 上正确填充)仅在缓冲情况下被考虑。

如何确保数据库上的非缓冲查询被正确取消?

非缓冲异步 API 当前...不是完全异步,因为:IAsyncEnumerable<T> 当时不存在 。这将在 v3 中重新讨论,作为 API 中断 - 以及异步取消 通常 。如此简短的回答:现在,你不能。