我遇到了一些看起来像这样的代码(它基于Dapper教程):
await using var con = new SqlConnection("some connection");
if (CancellationToken.IsCancellationRequested) await con.OpenAsync(CancellationToken);
return await con.QueryAsync(query, parameters);
我的理解是,如果设置了取消令牌,那么它将打开与该令牌的异步连接。但是,如果未设置,它将不会尝试打开连接,而只会调用查询语句。
我想了解的是,如果您不打电话给con.OpenAsync
,con.QueryAsync
会打电话吗?本质上,如果没有取消令牌,我需要显式调用它吗?
我想了解的是,如果您不打电话给
con.OpenAsync
,con.QueryAsync
会打电话吗?
基本上,如果没有取消标记,我需要显式调用它吗?
否;您无需将其称为带有或不带有取消令牌
但是!如果您要执行多个related操作-可能涉及临时表或事务-那么您将需要进行自己的连接状态管理,即您需要自己调用Open[Async]
(和Close
,如果您不立即处理它的话。