6

相关:How can you cancel a SQL Server execution process programmatically用户如何取消长时间运行的查询?

我创建了一个基本上是数据库(Sql Server)中的数据查看器的应用程序(Windows,WPF)。该应用程序没有编辑功能。

该应用程序提供了基于来自用户的输入来搜索记录的能力。大多数情况下,行通过关键列进行搜索并运行速度非常快。但是表中的一列是一个很大的文本字段,我想提供基于该字段内容搜索行的功能。因此,生成的sql查询可能需要一些时间才能完成。我想提供一个停止按钮,以便用户可以放弃搜索,如果需要的话。我放在上面的链接使用Kill命令杀死Sql服务器中的spid,但我不确定这是如何工作的,因为我使用的是实体框架(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中的停止按钮类似。

这可能吗?

+0

[取消实体框架查询(http://stackoverflow.com/questions/5143957/cancelling-an-entity-framework-query)的可能重复 – 2011-05-13 17:05:13

回答

2
+0

我看到题。所以我唯一的选择是创建一个线程,然后在该线程上执行查询,然后中止该线程,如果我希望它停止? – 2011-05-13 17:31:11

+1

是的。您必须从另一个线程中取消数据库操作。 – Olaf 2011-05-13 17:35:38

相关问题