首页 > 解决方案 > Dapper:如何取消异步非缓冲查询?

问题描述

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

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

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

标签: async-awaitado.netgrpcdappercancellation

解决方案


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


推荐阅读