Questo è al limite dell'essere un bug nel driver C#. Si scopre che IdMemberMap non è definito fino a quando la mappa della classe non è "congelata", per motivi legati alle gerarchie di classi in cui l'ID potrebbe essere effettivamente definito in una classe base. Un modo per aggirare questo problema è:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.Freeze();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
Un altro modo per aggirare il problema consiste nell'usare GetMemberMap invece di IdMemberMap:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});