将sqlprovider类型对象转换为json字符串



我试图没有成功转换由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}]"

相关内容

  • 没有找到相关文章

最新更新