Я использую Dapper 1.31 от Nuget. У меня есть этот очень простой фрагмент кода,Аннулирование токена на Dapper
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
?
Спасибо!
'динамический param' займет довольно много ничего. То, что вы делаете, похоже на передачу токена отмены в качестве параметра в 'Console.WriteLine (string, params object [])'. Просто потому, что вы можете передать это, это не означает, что функция поддерживает отмену. –