sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man fixar {document}.Id stöds inte fel

Jag hade ställts inför samma problem. Efter felsökning i MongoDB-kod såg jag att en annan serialiserare används när gränssnittet används istället för den specifika typen. I det här fallet, DiscriminatedInterfaceSerializer används som serializer för gränssnittet, medan BsonClassMapSerializer används för den specifika typen.

Med denna serializer för gränssnittet är klasskartan för den implementerande klassen inte länkad till gränssnittet. Den är därför omedveten om att Id är bson-id-fältet och bör mappas till '_id'-nyckeln. Det är därför undantaget tas upp.

Lösningen som fungerade för mig är att använda ImpliedImplementationInterfaceSerializer :

[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity 
{ 
   // snip...
}

Detta attribut registrerar serializern och definierar att använda enhetens bson-klasskarta för IENtity så att Id-egenskapen kommer att mappas korrekt. Jag hittade den här lösningen tack vare @Robert Baker i hans svar här:Deserialisera objekt som ett gränssnitt med MongoDB C# Driver



  1. Finns det ett kommando i Redis för HASH-datastruktur som liknar MGET?

  2. Meteor:ladda upp fil från klient till Mongo-samling vs filsystem vs GridFS

  3. Gruppera efter datumintervall

  4. Försöker göra en bulk upsert med Mongoose. Vad är det renaste sättet att göra detta på?