{“ _csharpnull”:true}作为属性之一中的文档。这是什么意思?

时间:2019-07-30 08:15:18

标签: mongodb serialization deserialization

我正在使用Mongodb的C#驱动程序2.8将C#对象序列化为版本3.4.9的Mongdb数据库。

在保存的一些文档中,我得到此文档{“ _csharpnull”:true},我不知道为什么C#驱动程序会创建这样的文档。而且,当我尝试对其进行反序列化时,它当然行不通。

保存文档的示例

  { 
      "_id" : "LINESTEST/YA11", 
      "Metadata" : {
          "LockMetadata" : {
              "_csharpnull" : true
          }
      }
  }

1 个答案:

答案 0 :(得分:1)

BsonValues序列化

如果我们假设您的参数LockMetadata == null的类型为LockMetadata或从其派生的任何内容,例如MongoDB.Bson.BsonValue,则在C#端有BsonDocument时,这是预期的您的C#模型(或表示为see documentation),

代码LockMetadata .ToBsonDocument()将序列化为_csharpnull,并在mongodb服务器下显示如下:

"yourObjectProperty" : {
    "_csharpnull" : true
},

此处有更多相关信息:How should BsonValues be serialized for C# null?