MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Phần tử 'id' không khớp với bất kỳ trường hoặc thuộc tính nào bị lỗi với các lớp lồng nhau

Câu chuyện ngắn:đó là tất cả về các quy ước. Trình điều khiển MongoDB .NET hiển thị lớp tĩnh ConventionRegistry cho phép bạn đăng ký quy ước của riêng mình (thêm tại đây ). Ngoài ra, có hai quy ước "tích hợp sẵn" __defaults____attributes__ . Tìm hiểu sâu hơn (trình điều khiển github ) bạn có thể thấy rằng nó đăng ký một quy ước khá thú vị:

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

Có nghĩa là id các thành viên sẽ được coi là phần tử BSON _id thông thường.

Làm thế nào để khắc phục điều đó?

Bạn có thể loại bỏ các quy ước mặc định

ConventionRegistry.Remove("__defaults__");

Tuy nhiên, tự động bạn sẽ bỏ tất cả các quy ước về trình điều khiển khác, điều này khá rủi ro. Ngoài ra, bạn có thể tạo một thuộc tính giả sẽ luôn trống:

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

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

hoặc bạn chỉ có thể sử dụng BsonNoId thuộc tính nào

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

Vì vậy, quy ước sẽ đặt id của bạn là IdMember trong bản đồ lớp nhưng sau đó trong quá trình hậu xử lý, thuộc tính này sẽ buộc IdMember là null và lớp của bạn sẽ được deserialized thành công



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB, thêm {field:value} mới trong tài liệu nhúng hiện có với ký hiệu chấm nhiều cấp?

  2. Cài đặt MongoDB trên CentOS 7

  3. Cập nhật về Aggregate trong Mongodb

  4. Chỉ mục không phân biệt chữ hoa chữ thường MongoDB bắt đầu có vấn đề về hiệu suất

  5. Các đối tượng không hợp lệ dưới dạng dữ liệu con của React từ MongoDB