MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

IdMemberMap est nul à l'aide des options de sérialisation de représentation

C'est à la limite d'être un bogue dans le pilote C#. Il s'avère que IdMemberMap n'est pas défini tant que le mappage de classe n'est pas "gelé", pour des raisons liées aux hiérarchies de classes dans lesquelles l'Id peut en fait être défini dans une classe de base. Voici une façon de contourner ce problème :

BsonClassMap.RegisterClassMap<Person>(cm => {
    cm.AutoMap();
    cm.Freeze();
    cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});

Une autre façon de contourner le problème consiste à utiliser GetMemberMap au lieu de IdMemberMap :

BsonClassMap.RegisterClassMap<Person>(cm => {
    cm.AutoMap();
    cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});