F#中的EF C#ToListAsync等效于什么?

cos*_*sta 2 f# c#-to-f# entity-framework-6

我在C#中有以下代码:

public async Task<List<Table>> GetRows()
{
  return await db.Table.ToListAsync();
}  
Run Code Online (Sandbox Code Playgroud)

其中db是EF 6 DbContext。

假设我访问相同的DbContext,如何在F#中编写等效内容?

我想出了这段代码,但我陷入了困境:

let getRows = async {
   let q = query { 
         from r in db.Table
             select r
         }
   q |> Seq.map(fun row -> ...) // <-- Here I might want to do some custom function
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Boh*_*pak 6

.ToListAsync()在F#中使用没有问题。我认为您的困惑是使C#await与F#完美配合async

在这种情况下,您应该使用Async.AwaitTask 以下代码

async {
    let! q = db.Table.ToListAsync() |> Async.AwaitTask //here you have a C# list
}
Run Code Online (Sandbox Code Playgroud)

  • [TaskBuilder.fs](https://github.com/rspeele/TaskBuilder.fs)帮助我编写了仅打算从C#/ VB应用程序使用的异步F#代码。 (5认同)