MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara memperbaiki {document}.Id tidak didukung kesalahan

Saya telah menghadapi masalah yang sama. Setelah debugging dalam kode MongoDB, saya melihat bahwa serializer yang berbeda diterapkan saat menggunakan antarmuka alih-alih tipe tertentu. Dalam hal ini, DiscriminatedInterfaceSerializer digunakan sebagai serializer untuk antarmuka, sedangkan BsonClassMapSerializer digunakan untuk tipe tertentu.

Dengan serializer ini untuk antarmuka, peta kelas dari kelas pelaksana tidak ditautkan ke antarmuka. Oleh karena itu tidak disadari bahwa Id adalah bidang id bson dan harus dipetakan ke kunci '_id'. Itu sebabnya pengecualian dimunculkan.

Solusi yang berhasil bagi saya adalah menggunakan ImpliedImplementationInterfaceSerializer :

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

Atribut ini mendaftarkan serializer dan mendefinisikan untuk menggunakan peta kelas bson Entitas untuk IEntity sehingga properti Id akan dipetakan dengan benar. Saya menemukan solusi ini berkat @Robert Baker dalam jawabannya di sini:Deserialize objek sebagai antarmuka dengan MongoDB C# Driver



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. populasi yang dalam di luwak

  2. Terhubung ke MongoDB Atlas Cluster db dengan aplikasi asli-reaksi

  3. Panduan untuk Penerapan &Pemeliharaan MongoDB Menggunakan Wayang:Bagian 1

  4. Grup Bersarang Agregat Mongodb

  5. Desain skema Mongodb