MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Faire en sorte que Json.NET + MongoDB Bson jouent bien ensemble

Oui, vous devez implémenter explicitement la conversion entre JObject et BsonDocument taper. Vous pouvez implémenter votre propre convertisseur et utiliser des attributs pour éviter de traverser votre structure de type C#. Essayez :

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);
    }
}