【发布时间】:2017-04-08 04:53:23
【问题描述】:
在 .NET 4.5 中,使用 async/await 模式,可以通过在异步控制器方法中包含 CancellationToken 轻松取消 Web 请求。这当然可以传递给任何异步实体框架方法,并且可以很好地取消整个事情。
但是追溯到 6 年前,在异步时代之前,WebAPI 或 MVC 控制器方法是如何被取消的?有可能吗?如果是这样,是否也可以在这些取消的请求中取消长时间运行的实体框架查询?
我提出这个问题的动机是,我进行了一些实验,发现在几乎所有情况下,我的大型 EF 查询的同步版本都比异步版本快。异步版本长 10% 到 50%。此外,我的应用程序供内部使用,实际上最多只能为 3 个并发用户提供服务,因此可扩展性不是问题。
简而言之,我想要老式的同步实体框架方法(因此,同步控制器方法)的速度,但具有可取消性。
【问题讨论】:
标签: asp.net entity-framework async-await