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

Sådan rettes {document}.Id er ikke understøttet fejl

Jeg havde stået over for det samme problem. Efter fejlretning i MongoDB-kode, så jeg, at en anden serializer anvendes, når man bruger grænsefladen i stedet for den specifikke type. I dette tilfælde DiscriminatedInterfaceSerializer bruges som serializer til grænsefladen, hvorimod BsonClassMapSerializer bruges til den specifikke type.

Med denne serializer til grænsefladen er klasseoversigten for den implementerende klasse ikke knyttet til grænsefladen. Den er derfor uvidende om, at Id er bson-id-feltet og skal tilknyttes '_id'-nøglen. Derfor rejses undtagelsen.

Den løsning, der virkede for mig, er at bruge ImpliedImplementationInterfaceSerializer :

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

Denne attribut registrerer serializeren og definerer at bruge entitetens bson-klassekort for IENtity, så Id-egenskaben bliver korrekt kortlagt. Jeg fandt denne løsning takket være @Robert Baker i hans svar her:Deserialize objekt som en grænseflade med MongoDB C# Driver



  1. Kan ikke oprette forbindelse til MongoDB med autentificering aktiveret

  2. MongoDB/PHP:slet element fra array

  3. Mongoose:hvad er forskellene mellem Model.create og Collection.insert

  4. mappestruktur for MEAN stack