【发布时间】:2011-02-28 15:30:11
【问题描述】:
我正在为 WinForms 应用程序编写查询管理器,除此之外,它需要能够在用户输入查询时向他们提供实时搜索结果(想想 Google 的实时结果) ,尽管显然是在胖客户端环境而不是 Web 环境中)。由于结果需要在用户键入时开始到达,因此搜索将变得越来越具体,所以我希望能够在用户输入更具体的信息时取消查询(因为结果会无论如何,只是被丢弃)。
如果这是普通的 ADO.NET,我显然可以使用 DbCommand.Cancel 函数并完成它,但我们使用 EF4 进行数据访问,似乎没有明显的取消方法一个问题。此外,在 Reflector 中打开 System.Data.Entity 并查看 EntityCommand.Cancel 会显示令人沮丧的空方法体,尽管 docs 声称调用它会将其传递给提供程序命令的相应 Cancel 函数。
我考虑过简单地让现有查询运行并启动一个新上下文来执行新搜索(并在完成后处理现有查询),但我不喜欢单个客户端拥有一个当我只对最近一个的结果感兴趣时,大量打开的数据库连接运行并行查询。
所有这一切都让我相信,一旦 EF 查询被分派到数据库,就根本无法取消它,但我希望这里有人能够指出我忽略的一些事情。
TL/DR 版本:是否可以取消当前正在执行的 EF4 查询?
【问题讨论】:
-
我在 MSDN 论坛上问过关于这个问题的问题:social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/… 这个原始问题是链接的。希望来自 MS 的人能提供另一种解决方案。
标签: entity-framework entity-framework-4