Você não precisa escrever
BsonClassMap.RegisterClassMap<MyClass>();
, porque todas as classes serão automaticamente mapeadas por padrão. Você deve usar
RegisterClassMap
quando você precisa de serialização personalizada: BsonClassMap.RegisterClassMap<MyClass>(cm => {
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.SomeProperty));
});
Além disso, você pode usar atributos para criar gerenciar a serialização (parece mais nativo para mim):
[BsonId] // mark property as _id
[BsonElement("SomeAnotherName", Order = 1)] //set property name , order
[BsonIgnoreExtraElements] // ignore extra elements during deserialization
[BsonIgnore] // ignore property on insert
Além disso, você pode criar regras globais usadas durante o mapeamento automático, como esta:
var myConventions = new ConventionProfile();
myConventions.SetIdMemberConvention(new NoDefaultPropertyIdConvention());
BsonClassMap.RegisterConventions(myConventions, t => true);
Estou usando apenas atributos e convenções para gerenciar o processo de serialização.
Espero que esta ajuda.