运行以下代码:
type Test =
| L of int
| M of string
| N of bool
let client = new MongoClient("mongodb://localhost:27017")
let _db = client.GetDatabase("TestDB")
let collection = _db.GetCollection<Test>("TestLog")
collection.InsertOne(L 22)
我将以下内容插入我的收藏中:
_id: ObjectID('58d054f79a91e00c8379ab82')
_t: "L"
所以看起来Mongo的.NET驱动程序不知道如何处理受歧视的联盟。我已经看到了一些库,但它们已经很老了,我想检查一下框架中没有内置任何东西。我尝试的另一件事是使用Newtonsoft的JSON序列化器,如下所示:
let Json = JsonConvert.SerializeObject(L 22)
let doc = BsonSerializer.Deserialize<BsonDocument>(Json)
它将所有东西都输入到数据库中,但它们都是字符串类型而不是它们应该的类型(在本例中为int)。
答案 0 :(得分:0)
NamelessInteractive.FSharp序列化库可以非常有效地处理这个问题。它与被区分的联合,记录类型,记录类型中嵌入的有区别的联合等非常好地工作(并保留类型)。