SqlKata使用取消令牌

4

我有一些长时间运行的查询,如果浏览器取消API请求,我希望能在中途取消它们的执行。我正在使用SqlKata来执行我的查询,但我没有看到取消令牌的参数。我如何能够取消我的查询?

我想要类似这样的代码 query.GetAsync<T>(cancelationToken: cancelationToken)


1
欢迎来到 StackOverflow。您是否已经查看了 SqlKata 的 这个问题 - Peter Csala
我看到了这个问题单,但它相当古老,而且我没有看到任何解决方案。我希望现在已经有一个修复方法了。 - Moshe
如果SqlKata社区尚未修复,则最多可以找到一些解决方法。 - Peter Csala
1个回答

5

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

或者你可以通过从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));

是的,它最近被添加了,当前日期的正确版本应为https://www.nuget.org/packages/SqlKata/2.3.3,3.2.3是错误发布并从Nuget中取消发布的。 - amd
谢谢。我已经编辑了我的回复,改成了正确的版本。 - Moshe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接