Asynchronous F中的异步EF查询#
在C#中,使用EF6,我可以轻松地进行如下异步操作:Asynchronous F中的异步EF查询#,asynchronous,f#,entity-framework-6,Asynchronous,F#,Entity Framework 6,在C#中,使用EF6,我可以轻松地进行如下异步操作: 使用(var context=new MyDbContext()){ var item=await context.SomeEntities.Where(e=>e.Id==1.FirstAsync(); 剂量测定(项目); } 如何使用F#异步工作流实现同样的功能 我知道query工作流以及如何使用它来代替LINQ,但我不知道如何使它正确地异步(即不永久消耗线程池,如在C#示例中)。以下是我到目前为止得到的信息(它是同步的): 我正在寻找一
使用(var context=new MyDbContext()){
var item=await context.SomeEntities.Where(e=>e.Id==1.FirstAsync();
剂量测定(项目);
}
如何使用F#异步工作流实现同样的功能
我知道query
工作流以及如何使用它来代替LINQ,但我不知道如何使它正确地异步(即不永久消耗线程池,如在C#示例中)。以下是我到目前为止得到的信息(它是同步的):
我正在寻找一些操作,如
headAsync
(类似于C#query中的FirstAsync
)或其他可靠的解决方案。您可以使用与C#中相同的扩展方法
我真傻,没想过。非常感谢。
use context = MyDbContext()
let item = query {
for e in context.SomeEntities
where (e.Id = 1)
head
}
DoSomething item
open System.Data.Entity
let asyncQuery = async {
return!
query {
for e in context.SomeEntities do
where (e.Id = 1)
select e}
|> QueryableExtensions.FirstAsync
|> Async.AwaitTask
}
let result = Async.RunSynchronously asyncQuery