我试图没有成功转换由sqlprovider提供的json类型。
我有一个方法:
let getAll () =
query {
for c in db.MyDb.Table do
select c
}
那么我用Newtonsoft.Json
来称呼它:
JsonConvert.SerializeObject(getAll ())
我得到的是一个带空对象的字符串:[{}]
c.something
),它也可以工作。我想我错过了一些基本的(希望;))
这种用法在第212期中提到过。因为生成的SqlEntity类型不是Json序列化器所知道的,所以它将无法直接处理它。解决这个问题的一种方法是为表定义记录类型(这对于大型表来说可能不太好)。例如:
type DataRec' = {
DT:DateTime
ADAY:String
ID:System.Int64
}
let qry = query { for row in table1 do
select row} |> Seq.map (fun x -> x.MapTo<DataRec'>())
JsonConvert.SerializeObject(qry |> Seq.toList)
val it: string =
"[{"DT":"2016 - 09 - 27 t00:00:00","天":"周二"、"ID":8},{"DT":"2016 - 09 - 26 t00:00:00","天":"星期一","ID":9},{"DT":"2016 - 09 - 25 t00:00:00","天":"星期天","ID":10},{"DT":"2016 - 09 - 24 t00:00:00","天":"星期六"、"ID":11},{"DT":"2016 - 09 - 27 t00:00:00","天":"周二"、"ID":12},{"DT":"2016 - 09 - 24 t00:00:00","天":"星期六"、"ID":13},{"DT":"2016 - 09 - 24 t00:00:00","天":"星期六"、"ID":14},{"DT":"2016 - 09 - 23 t00:00:00","天":"星期五","ID":15},{"DT":"2016 - 09 - 25 t00:00:00","天":"星期天","ID":16},{:"DT 2016 - 09 -26 t00:00:00"、"天":"周一"、"ID":17}]"