Это граничит с ошибкой в драйвере C #. Оказывается, IdMemberMap не определяется до тех пор, пока карта классов не будет «заморожена», по причинам, связанным с иерархиями классов, в которых идентификатор может фактически быть определен в базовом классе. Один из способов обойти это:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.Freeze();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
Еще один способ обойти это использовать GetMemberMap вместо IdMemberMap:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});