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

Khóa tổng hợp MongoDB:InvalidOperationException:{document} .Identity không được hỗ trợ

Tôi đã xem xét quá trình hydrat hóa thông qua bài đăng của nhà xây dựng được thực hiện thông qua GetProperties .

Vì vậy, public readonly Sku Sku; không hiển thị qua classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) bởi vì nó chỉ có thể được truy cập như là trường thành viên.

Bạn có thể thay đổi nó thành public Sku Sku { get; } vì vậy nó được hydrat hóa thông qua phương thức khởi tạo thông qua GetProperties và thay đổi tất cả các trường chỉ đọc (Sku - VendorId, Value &VendorId - Value các trường) để có phương thức lấy thuộc tính.

Ngoài ra, bạn phải thêm cm.MapProperty(c => c.Identity) vì vậy x=>x.Identity.Equals(entity.Identity) có thể được tuần tự hóa khi được sử dụng dưới dạng biểu thức vì Identity không thể ngậm nước và đăng ký thông qua ImmutablePocoConvention vì nó không phải là một đối số của phương thức khởi tạo khi logic bản đồ tự động chạy.

Thay đổi mã:

public class Sku : Identity<Product>
{
    public VendorId VendorId { get; }
    public string Value { get; }
}

public class VendorId : Identity<Vendor>
{
    public string Value { get; }
}

BsonClassMap.RegisterClassMap<Product>(cm =>
{
   cm.AutoMap();
   cm.MapIdMember(c => c.Sku);
   cm.MapProperty(c => c.Identity);
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật mật khẩu băm với mongoose express

  2. MongoDB (máy chủ v 2.6.7) với trình điều khiển C # 2.0:Cách lấy kết quả từ InsertOneAsync

  3. Cách tìm vật phẩm bằng regex trong Mongoose

  4. Xóa các mục cụ thể khỏi mảng với MongoDB

  5. Mảng Mongodb $ push và $ pull