Ich benutze Dapper 1.31 von Nuget. Ich habe diesen sehr einfachen Code-Schnipsel,Widerrufsmarke auf 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();
}
Wenn ich F12 auf QueryAsync
drücken, er zeigt mir
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
Es gibt keine CancellationToken
auf seiner Unterschrift.
Fragen:
- das Snippet vollständig bebaubare vorausgesetzt Warum ist, dass keine Compiler-Fehler auf der gesamten Lösung ist?
- Verzeihen Sie mir, wie ich nicht testen kann, wenn Aufruf
tokenSource.Cancel()
würde wirklich die Methode abbrechen, weil ich nicht weiß, wie lange SQL-Abfrage zu generieren. Wird die.Cancel()
die Methode wirklich abbrechen undOperationCancelledException
auslöst?
Vielen Dank!
'dynamische param' nimmt so ziemlich alles genießen. Was Sie tun, ist so etwas wie die Übergabe eines Abbruch-Tokens als Parameter an 'Console.WriteLine (string, params object [])'. Nur weil Sie es weitergeben können, bedeutet dies nicht, dass die Funktion die Löschung unterstützt. –