MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Fare in modo che Json.NET + MongoDB Bson giochino bene insieme

Sì, devi implementare esplicitamente la conversione tra JObject e BsonDocument genere. È possibile implementare il proprio convertitore e utilizzare gli attributi per evitare di attraversare la struttura di tipo C#. Prova:

public class Detail
{
    [BsonSerializer(typeof(DynamicSerializer))]
    public dynamic Value { get; set; }
}

public class DynamicSerializer : SerializerBase<dynamic>
{
    public override dynamic Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        var myBSONDoc = BsonDocumentSerializer.Instance.Deserialize(context);
        return (dynamic)JObject.Parse(context.ToString());
    }

    public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, dynamic value)
    {
        var bson = MongoDB.Bson.BsonDocument.Parse(value.ToString());
        BsonDocumentSerializer.Instance.Serialize(context, args, bson);
    }
}