[英]F# SQL Insert in Observable
我有一个SQL Server CE数据库,正在尝试使用事件中的值进行更新,但是当我尝试从可观察到的事件中进行插入时,控制台会打印出
<null>
有人知道为什么是这样吗?
在可观察范围之外的代码:
let test1 =
use con = new SqlCeConnection (@"Data Source=C:\Users\Database1.sdf")
con.Open()
let AA = "Enter"
let BB = "Enter"
use cmd = new SqlCeCommand("insert into Table1 (A,B) values (@A, @B)", con)
let A1 = new SqlCeParameter("A", "1")
let B1 = new SqlCeParameter("B", "2")
do cmd.Parameters.Add A1 |>ignore
do cmd.Parameters.Add B1 |>ignore
do cmd.ExecuteNonQuery() |>ignore
printfn "%s" "complete1"
()
返回<null>的代码,也要注意最后的printfn不会执行。
let sqlsubmit = stream|> Observable.map (fun x ->
use con = new SqlCeConnection (@"Data Source=C:\Users\Database1.sdf")
con.Open()
let AA = "Enter"
let BB = "Enter"
use cmd = new SqlCeCommand("insert into Table1 (A,B) values (@A, @B)", con)
let A1 = new SqlCeParameter("A", "1")
let B1 = new SqlCeParameter("B", "2")
do cmd.Parameters.Add A1 |>ignore
do cmd.Parameters.Add B1 |>ignore
do cmd.ExecuteNonQuery |>ignore
printfn "%s" "complete1"
)
我已经尝试过Linq的SubmitChanges()
,它的作用相同。
这是用于LINQ SubmitChanges的类型:
[<Table(Name = "Table1")>]
type Macro (A:string, B:string)=
[<Column(IsPrimaryKey=true)>]
member this.A = A
[<Column>]
member this.B = B
F#中的unit
类型是单例类型; 它的值由()
指定。
()
值在编译后的代码中用null
表示,这就是为什么您看到代码返回null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.