带有取消令牌的 SqlKata

问题描述

我有一些长时间运行的查询,如果 API 请求被浏览器取消,我想取消中间执行。我正在使用 sqlkata 来执行我的查询,但我没有看到取消令牌的参数。我如何才能取消查询

我想要这样的东西query.GetAsync<T>(cancelationToken: cancelationToken)

解决方法

看起来最新版本的 sql kata 将其作为参数之一。我刚刚将包 SqlKataSqlKata.Execution 升级到版本 2.3.3,我在源代码中看到了它。

或者,您可以通过 Dapper 手动运行它,方法是从 SqlKata 获取 SQL 字符串和绑定并将其传递给 Dapper。我没有测试这个,但它会是这样的:

var connection = new SqlConnection(connectionString);
var compiler = new SqlServerCompiler();
var db = new QueryFactory(connection,compiler);
var query = db.Query("TableName"); // write your query here

var sqlResult = db.Compiler.Compile(query);
var sqlString = sqlResult.Sql;
var bindings = sqlResult.Bindings;

await using var connection = new SqlConnection(connectionString);
var result = await connection.QueryAsync(new CommandDefinition(sqlString,bindings,cancellationToken: cancellationToken));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...