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

Elemen 'id' tidak cocok dengan bidang atau properti kesalahan apa pun dengan kelas bersarang

Singkat cerita:ini semua tentang konvensi. Driver MongoDB .NET mengekspos kelas statis ConventionRegistry yang memungkinkan Anda untuk mendaftarkan konvensi Anda sendiri (lebih banyak di sini ). Selain itu ada dua konvensi "bawaan" __defaults__ dan __attributes__ . Menggali lebih dalam (driver github ) Anda dapat menemukan bahwa ia mendaftarkan satu konvensi yang cukup menarik:

new NamedIdMemberConvention(new [] { "Id", "id", "_id" })

Artinya id anggota akan dianggap sebagai elemen _id BSON biasa.

Bagaimana cara memperbaikinya?

Anda dapat menyingkirkan konvensi default

ConventionRegistry.Remove("__defaults__");

Namun secara otomatis Anda akan membatalkan semua konvensi driver lain yang cukup berisiko. Atau Anda dapat membuat properti palsu yang akan selalu kosong:

public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }

    [BsonId]
    public ObjectId FakeId { get; set; }
}

atau Anda bisa menggunakan BsonNoId atribut yang

[BsonNoId]
public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }
}

Jadi konvensi akan mengatur id Anda sebagai IdMember di peta kelas tetapi kemudian selama pascapemrosesan atribut ini akan memaksa IdMember menjadi nol dan kelas Anda akan berhasil dideserialisasi



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ubah string menjadi MongoDB BsonDocument

  2. MongoDB:Bagaimana cara mengembalikan elemen acak tanpa Linq? (MongoDB, C#)

  3. latar belakang mongo createIndex memblokir shell

  4. Menghapus elemen array di mongoDB berdasarkan posisi elemen

  5. Apa metode terbaik untuk menyemai aplikasi Node/MongoDB?