QueryAsync 是否使用 Dapper 调用 OpenAsync?

Does QueryAsync calls OpenAsync with Dapper?

我发现了一些看起来像这样的代码(它基于 Dapper 教程):

await using var con = new SqlConnection("some connection");
if (CancellationToken.IsCancellationRequested) await con.OpenAsync(CancellationToken);
return await con.QueryAsync(query, parameters);

我的理解是,如果设置了取消令牌,那么它将打开与该令牌的异步连接。但是,如果未设置,则不会尝试打开连接,而只会调用查询语句。

我想了解的是,如果您不调用 con.OpenAsynccon.QueryAsync 调用它吗?本质上,如果没有取消令牌,我是否需要显式调用它?

What I'm trying to understand is if you don't call con.OpenAsync will con.QueryAsync call it?

yes

Essentially do I need to explicitly call it if there is no cancellation token?

没有;无论有无取消令牌

,您都不需要称呼它

但是!如果您要执行多个 相关 操作 - 可能涉及临时 table 或事务 - 那么您将需要进行自己的连接状态管理,即您需要调用Open[Async] 你自己(和 Close,如果你不立即处理它的话)。