MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

IdMemberMap è nullo usando le opzioni di serializzazione della rappresentazione

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);
});