sql >> Databáze >  >> NoSQL >> MongoDB

Jak opravit {document}. Chyba Id není podporována

Potýkal jsem se se stejným problémem. Po ladění v kódu MongoDB jsem viděl, že při použití rozhraní je místo konkrétního typu použit jiný serializátor. V tomto případě DiscriminatedInterfaceSerializer se používá jako serializátor pro rozhraní, zatímco BsonClassMapSerializer se používá pro konkrétní typ.

S tímto serializátorem pro rozhraní není třída implementující třídy propojena s rozhraním. Proto si není vědom, že Id je pole bson id a mělo by být mapováno na klíč '_id'. Proto je vznesena výjimka.

Řešením, které se mi osvědčilo, je použití ImpliedImplementationInterfaceSerializer :

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

Tento atribut registruje serializátor a definuje použití třídní mapy bson entity pro IEntity, takže vlastnost Id bude správně mapována. Toto řešení jsem našel díky @Robert Baker ve své odpovědi zde:Deserializovat objekt jako rozhraní pomocí MongoDB C# Driver



  1. Jak používat Aggregate v mangoose

  2. Získejte pouze poslední prvek pole mongoose

  3. Změna velikosti obrázků pomocí Nodejs a Imagemagick

  4. Vrácení prázdného pole příspěvků při použití mongoose naplnit