Dies grenzt an einen Fehler im C#-Treiber. Es stellt sich heraus, dass IdMemberMap nicht definiert ist, bis die Klassenzuordnung "eingefroren" ist, aus Gründen, die mit Klassenhierarchien zu tun haben, in denen die ID möglicherweise tatsächlich in einer Basisklasse definiert ist. Eine Möglichkeit, dies zu umgehen, ist:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.Freeze();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
Eine andere Möglichkeit, dies zu umgehen, besteht darin, GetMemberMap anstelle von IdMemberMap zu verwenden:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});