Nie musisz pisać BsonClassMap.RegisterClassMap<MyClass>();
, ponieważ wszystkie klasy będą domyślnie mapowane automatycznie.
Powinieneś użyć RegisterClassMap
kiedy potrzebujesz niestandardowej serializacji:
BsonClassMap.RegisterClassMap<MyClass>(cm => {
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.SomeProperty));
});
Możesz także użyć atrybutów do zarządzania serializacją (dla mnie wygląda to bardziej natywnie):
[BsonId] // mark property as _id
[BsonElement("SomeAnotherName", Order = 1)] //set property name , order
[BsonIgnoreExtraElements] // ignore extra elements during deserialization
[BsonIgnore] // ignore property on insert
Możesz także tworzyć globalne reguły używane podczas automatycznego mapowania, takie jak ta:
var myConventions = new ConventionProfile();
myConventions.SetIdMemberConvention(new NoDefaultPropertyIdConvention());
BsonClassMap.RegisterConventions(myConventions, t => true);
Do zarządzania procesem serializacji używam tylko atrybutów i konwencji.
Mam nadzieję, że ta pomoc.