Я использую Dapper 1.31 от Nuget. У меня есть этот очень простой фрагмент кода,
string connString = "";
string query = "";
int val = 0;
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (IDbConnection conn = new SqlConnection(connString))
{
conn.Open();
val = (await conn.QueryAsync<int>(query, tokenSource.Token)).FirstOrDefault();
}
Когда я нажимаю F12 на QueryAsync
, он указывает мне на
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
В его сигнатуре нет CancellationToken
.
Вопросы:
- Почему весь фрагмент полностью строится, предполагая, что ошибка компилятора на всем решении отсутствует?
- Простите меня, поскольку я не могу проверить, действительно ли вызов
tokenSource.Cancel()
действительно отменяет этот метод, потому что я не знаю, как создать длинный SQL-запрос. Будет ли.Cancel()
действительно отменять метод и выбрасываетOperationCancelledException
?
Спасибо!