我正在努力将sqlprovider提供的类型转换为json。
我有一个方法:
let getAll () =
query {
for c in db.MyDb.Table do
select c
}
然后我用Newtonsoft.Json
称呼它:
JsonConvert.SerializeObject(getAll ())
我得到的是一个带有空对象的字符串:[{}]
如果我手动创建一个类型,它可以正常工作。如果我选择基本类型和单个属性(例如c.something
),它也可以。
我想我错过了一些基本的东西(希望如此;))
答案 0 :(得分:1)
Issue 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-27T00:00:00" , “ADAY”: “星期二”, “ID”:8},{ “DT”: “2016-09-26T00:00:00” “ADAY”: “星期一”, “ID”:9},{ “DT”: “2016-09-25T00:00:00”, “ADAY”: “星期日”, “ID”:10},{” DT “:” 2016-09-24T00:00:00" , “ADAY”: “星期六”, “ID”:11},{ “DT”: “2016-09-27T00:00:00”, “ADAY” : “星期二”, “ID”:12},{ “DT”: “2016-09-24T00:00:00”, “ADAY”: “星期六”, “ID”:13},{ “DT”:” 2016-09-24T00:00:00" , “ADAY”: “星期六”, “ID”:14},{ “DT”: “2016-09-23T00:00:00”, “ADAY”: “星期五” , “ID”:15},{ “DT”: “2016-09-25T00:00:00”, “ADAY”: “星期日”, “ID”:16},{ “DT”:“2016-09- 26T00:00:00" , “ADAY”: “星期一”, “ID”:17}]“