gpt4 book ai didi

F# 中的异步 EF 查询

转载 作者:行者123 更新时间:2023-12-04 05:01:20 25 4
gpt4 key购买 nike

在使用 EF6 的 C# 中,我可以轻松地进行这样的异步操作:

using (var context = new MyDbContext()) {
var item = await context.SomeEntities.Where(e => e.Id == 1).FirstAsync();
DoSomething(item);
}

我怎么能用 F# 异步工作流做同样的事情?

我知道 query 工作流以及如何使用它而不是 LINQ,但我不知道如何使其正确异步(即没有永久消耗线程池,就像在 C# 示例中一样)。这是我到目前为止得到的(它是同步的):
use context = MyDbContext()
let item = query {
for e in context.SomeEntities
where (e.Id = 1)
head
}
DoSomething item

我正在寻找一些操作,如 headAsync(类似于 C# 查询中的 FirstAsync)或其他可靠的解决方案。

最佳答案

您可以使用在 C# 中使用的相同扩展方法。

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

关于F# 中的异步 EF 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32806981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com