Не е необходимо да пишете BsonClassMap.RegisterClassMap<MyClass>();
, защото всички класове ще бъдат автоматично картографирани по подразбиране.
Трябва да използвате RegisterClassMap
когато имате нужда от персонализирано сериализиране:
BsonClassMap.RegisterClassMap<MyClass>(cm => {
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.SomeProperty));
});
Също така можете да използвате атрибути, за да създадете управлявана сериализация (изглежда по-родна за мен):
[BsonId] // mark property as _id
[BsonElement("SomeAnotherName", Order = 1)] //set property name , order
[BsonIgnoreExtraElements] // ignore extra elements during deserialization
[BsonIgnore] // ignore property on insert
Също така можете да създадете глобални правила, които се използват по време на автоматично картографиране, като това:
var myConventions = new ConventionProfile();
myConventions.SetIdMemberConvention(new NoDefaultPropertyIdConvention());
BsonClassMap.RegisterConventions(myConventions, t => true);
Използвам само атрибути и конвенции за управление на процеса на сериализация.
Надявам се това да помогне.