Отменить длительный запрос Dapper

c# dapper

Вопрос

У нас есть приложение winforms, которое использует Dapper для чтения базы данных.

В одной форме у нас есть (возможно) длинный запрос на фоновый поток.

Пользователи хотят иметь возможность отменить запрос, поэтому мне нужен доступ к DbCommand Dapper и вызывает Отмена на нем, если он запущен, из другого потока.

Что было бы лучшим способом разоблачить этот DbCommand у Dapper?

Популярные ответы

Это время молота. Перерыв.

using (var reader = connection.ExecuteReader(query)) {

.... теперь отменить

var wrappedReaderType = typeof (Dapper.CommandDefinition)
                        .Assembly.GetType("Dapper.WrappedReader");
var field = wrappedReaderType
            .GetField("cmd", BindingFlags.NonPublic | BindingFlags.Instance);
if (field != null)
{
    var command = field.GetValue(reader) as IDbCommand;
    if (command != null)
    {
        command.Cancel();
    }
}


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему