【发布时间】:2021-06-19 21:39:46
【问题描述】:
我有以下代码:
let getByIdAsync (connectionString : string) (id : int) =
let sql = @"SELECT * FROM [User] WHERE [Id] = @id"
let args = [ "id" => id ]
async {
use connection = new SqlConnection(connectionString)
do! connection.OpenAsync() |> Async.AwaitTask
try
use! reader = connection.ExecuteReaderAsync(sql, args) |> Async.AwaitTask
return reader |> mapRowsToRecords |> Seq.head
with
| e -> return Error e.Message
}
这段代码抛出MultiExec is not supported by ExecuteReader,我不知道为什么。其他查询(例如我的插入)工作得很好。我做错了什么?
【问题讨论】:
-
可能dup.
-
不,我已经看过那个了,不明白,我不明白我是如何获得多个 exec 的。我只有一个查询。
-
我不确定这是不是问题,但您调用
OpenAsync然后忽略结果,这意味着ExecuteReaderAsync原则上可以在连接(完全)打开之前启动.你应该使用do!和OpenAsync。 -
@TomasPetricek 谢谢你,很好的收获!我正在学习 F# 并且正在寻找一种方法来做
await OpenAsync()所以我正在尝试各种黑客。不幸的是,这并不能解决问题,但会更新问题中的代码。
标签: .net sql-server f# ado.net dapper