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

Comment RegisterClassMap pour toutes les classes dans un espace de noms pour MongoDb ?

Vous n'avez pas besoin d'écrire BsonClassMap.RegisterClassMap<MyClass>(); , car toutes les classes seront mappées automatiquement par défaut.

Vous devez utiliser RegisterClassMap lorsque vous avez besoin d'une sérialisation personnalisée :

 BsonClassMap.RegisterClassMap<MyClass>(cm => {
        cm.AutoMap();
        cm.SetIdMember(cm.GetMemberMap(c => c.SomeProperty));
    });

Vous pouvez également utiliser des attributs pour créer la gestion de la sérialisation (cela me semble plus natif) :

[BsonId] // mark property as _id
[BsonElement("SomeAnotherName", Order = 1)] //set property name , order
[BsonIgnoreExtraElements] // ignore extra elements during deserialization
[BsonIgnore] // ignore property on insert

Vous pouvez également créer des règles globales utilisées lors du mappage automatique, comme celle-ci :

var myConventions = new ConventionProfile();
myConventions.SetIdMemberConvention(new NoDefaultPropertyIdConvention());
BsonClassMap.RegisterConventions(myConventions, t => true);

J'utilise uniquement des attributs et des conventions pour gérer le processus de sérialisation.

J'espère que cette aide.