MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como corrigir {document}.Id is not supported error


Eu tinha enfrentado o mesmo problema. Após a depuração no código do MongoDB, vi que um serializador diferente é aplicado ao usar a interface em vez do tipo específico. Nesse caso, DiscriminatedInterfaceSerializer é usado como serializador para a interface, enquanto BsonClassMapSerializer é usado para o tipo específico.

Com este serializador para a interface, o classmap da classe implementadora não está vinculado à interface. Portanto, não sabe que Id é o campo bson id e deve ser mapeado para a chave '_id'. É por isso que a exceção é levantada.

A solução que funcionou para mim é usar ImpliedImplementationInterfaceSerializer :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity 
{ 
   // snip...
}

Este atributo registra o serializador e define o uso do classmap bson da Entidade para IEntity para que a propriedade Id seja mapeada corretamente. Encontrei esta solução graças a @Robert Baker em sua resposta aqui:Desserializar objeto como uma interface com o MongoDB C# Driver