To graniczy z błędem w sterowniku C#. Okazuje się, że IdMemberMap nie jest zdefiniowany, dopóki mapa klas nie zostanie "zamrożona", z powodów związanych z hierarchiami klas, w których identyfikator może być faktycznie zdefiniowany w klasie bazowej. Jednym ze sposobów obejścia tego problemu jest:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.Freeze();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
Innym sposobem obejścia tego problemu jest użycie GetMemberMap zamiast IdMemberMap:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});