6

relacionadas: How can you cancel a SQL Server execution process programmatically¿Cómo puede un usuario cancelar una consulta de larga ejecución?

He creado una aplicación (Windows, WPF) que es básicamente un visor de datos en una base de datos (SQL Server). La aplicación NO tiene ninguna funcionalidad de edición.

La aplicación ofrece la posibilidad de buscar registros en función de la información del usuario. En su mayor parte, las filas se buscan por una columna clave y se ejecutan bastante rápido. Pero una columna en la tabla es un campo de texto grande y quiero brindar la posibilidad de buscar filas según el contenido de este campo. Debido a esto, la consulta sql resultante podría tomar algún tiempo para completarse. Deseo proporcionar un botón Detener para que el usuario pueda abortar la búsqueda, si lo desea. El enlace que coloqué arriba usa el comando Kill para matar un spid en el servidor Sql, pero no estoy seguro de cómo funcionaría en mi situación ya que estoy usando Entity Framework (4.1)

Por ejemplo, supongamos que tenemos una consulta similar a esto:

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 
} 

Desde la consulta en realidad no sucede hasta que iterar a través de él con la instrucción foreach, ¿cómo puedo proporcionar al usuario un botón "Stop consulta"? Esto es similar al botón de detención en Sql Server Management Studio.

¿Esto es posible?

+0

posible duplicado de [Cancelación de una consulta de Entity Framework] (http://stackoverflow.com/questions/5143957/cancelling-an-entity-framework-query) –

Respuesta

2

Esto debería ayudarle a: Cancelling an Entity Framework Query

+0

he visto que la pregunta. Entonces, ¿mi única opción es crear un hilo y ejecutar la consulta en ese hilo y luego abortar el hilo si quiero que se detenga? –

+1

Sí. Tienes que cancelar la operación de la base de datos desde otro hilo. – Olaf

Cuestiones relacionadas