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



gRPCAPI中使用Dapper的SqlMapper.QueryAsync<T>方法来混合缓冲(较小,大小预先确定(和非缓冲(较大,大小可能为数百万行,无法提前判断(查询。

测试API客户端死亡/断开连接时的场景,即使调用服务不再消耗结果,非缓冲查询也会在DB上保持活动状态,直到完全执行为止,这会浪费宝贵的DB资源
查看QueryAsync代码,只有在缓冲的情况下才考虑取消令牌(在API客户端死亡/断开连接上正确填充(。

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

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

最新更新