Как пользователь может отменить длительный запрос? - PullRequest
6 голосов
/ 13 мая 2011

Похожие: Как программно отменить процесс выполнения SQL Server

Я создал приложение (Windows, WPF), которое в основном является средством просмотра данных в базе данных (Sql Server).).Приложение не имеет функции редактирования.

Приложение предоставляет возможность поиска записей на основе ввода от пользователя.По большей части строки ищутся по ключевому столбцу и работают довольно быстро.Но один столбец в таблице - это большое текстовое поле, и я хочу предоставить возможность поиска строк на основе содержимого этого поля.Из-за этого результирующий sql-запрос может занять некоторое время.Я хочу предоставить кнопку «Стоп», чтобы при желании пользователь мог прервать поиск.Ссылка, которую я разместил выше, использует команду Kill для уничтожения spid на сервере Sql, но я не уверен, как это будет работать в моей ситуации, так как я использую Entity Framework (4.1)

Например, предположим,a иметь запрос, подобный следующему:

var docs = from document in context.Documents
           join header in context.Headers
           on document.DocumentID equals header.HeaderID into headerGroup
           from subdoc in headerGroup.DefaultIfEmpty()
           where document.LargeTextColumn.Contains("search term")
           select (...)

foreach (var item in docs)
{
    //Do something with item here
}

Поскольку запрос фактически не выполняется до тех пор, пока я не выполню его итерацию с помощью оператора foreach, как я могу предоставить пользователю кнопку «Остановить запрос»?Это похоже на кнопку остановки в Sql Server Management Studio.

Возможно ли это?

1 Ответ

2 голосов
/ 13 мая 2011

Это должно помочь вам: Отмена запроса Entity Framework

...