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

Come registrareClassMap per tutte le classi in uno spazio dei nomi per MongoDb?

Non è necessario scrivere BsonClassMap.RegisterClassMap<MyClass>(); , perché tutte le classi verranno mappate automaticamente per impostazione predefinita.

Dovresti usare RegisterClassMap quando hai bisogno di una serializzazione personalizzata:

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

Inoltre puoi utilizzare gli attributi per creare gestire la serializzazione (sembra più nativo per me):

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

Inoltre puoi creare regole globali da utilizzare durante la mappatura automatica, come questa:

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

Sto usando solo attributi e convenzioni per gestire il processo di serializzazione.

Spero che questo aiuti.