f# - F# 参数化插入 Sql
问题描述
试图了解如何使用SqlCommandProvider
. 到目前为止我有这个
[<Literal>]
let connectionString = @"Data Source=.\SQL2019;Initial Catalog=MyDb;Trusted_Connection=True;"
type InsertCommand =
SqlCommandProvider<"INSERT INTO Category (Name, Value, Website) VALUES (@name, @value, @website)", connectionString, SingleRow = true>
let cmdInsert = new InsertCommand()
let insertCategories (data: seq<string * string>) =
data
|> Seq.iter
(
fun x ->
cmdInsert.Execute(name = fst x, value = Int32.Parse(snd x), website = "www.example.com") |> ignore
)
但是在线上new InsertCommand()
我收到了这个错误
The member or object constructor 'SqlCommandProvider,CommandText="...",ConnectionStringOrName="...",SingleRow="True"'
does not take 0 argument(s). An overload was found taking 2 arguments
有人可以解释一下吗?如果没有,有人可以举例说明如何进行参数化插入查询吗?
解决方案
错误消息告诉您,您缺少所提供类型的构造函数的参数,即您的InsertCommand
类型。我没有 SQL 数据库来尝试这个,但提供的类型SqlCommandProvider
应该有一个重载,它需要一个连接字符串和(可选)超时。
以下应该可以解决问题:
let cmdInsert = new InsertCommand(connectionString)
推荐阅读
- sql - 从当前日期查找前一周/月/季度号
- r - modify value in each row of a dataframe
- python-3.x - Disjoint set implementation in Python
- html - django - change list in POST request
- javascript - Display a downloaded blob image
- r - How do I extract the path before the "/" in R for multiple list.files?
- node.js - 如何在 node.js 中实现数字签名
- git - Where to put user-project specific Gradle properties?
- javascript - 限制 ocr 扫描的图像大小
- service-worker - Workbox Service Worker 未在缓存中存储图像和 API 响应