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

Deserialisasi tipe polimorfik dengan MongoDB C# Driver

Mengapa Anda memiliki "Id ObjectId publik" yang sama; di setiap kelas turunan? Ini bukan ide yang bagus. Ini menyembunyikan bidang Id induk.

Untuk mengatasi masalah Anda, Anda perlu "mendaftarkan" kelas turunan Anda (seperti dalam mekanisme serialisasi/deserialisasi). Ada 3 cara untuk melakukannya:

  1. Cara deklaratif - hiasi kelas Node dasar dengan:

    [BsonKnownTypes(typeof(PlotNode), typeof(EndNode))]
    
  2. Cara umum - ketika tipe diketahui pada waktu kompilasi:

    BsonClassMap.RegisterClassMap<PlotNode>();
    BsonClassMap.RegisterClassMap<EndNode>();
    
  3. Cara dinamis - ketika tipe tidak diketahui pada waktu kompilasi:

    BsonClassMap.LookupClassMap(typeof(PlotNode));
    BsonClassMap.LookupClassMap(typeof(EndNode));
    

  • Saran lain - gunakan LINQ alih-alih Kueri

    Node node = collection.AsQueryable().FirstOrDefault(n => n.Id == id);
    



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tutorial MongoDB untuk Pemula (Panduan Lengkap) – Pelajari MongoDB dalam 15 Menit

  2. Mongoose Model.find bukan fungsi?

  3. cara mengunduh file yang disimpan di gridFS menggunakan nodeJS

  4. MongoDB - Agregasi - Untuk mendapatkan item unik dalam array

  5. Koneksi MongoDb ditolak