MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Композитен ключ на MongoDB:InvalidOperationException:{document}. Самоличността не се поддържа

Гледах хидратацията чрез публикация на конструктора, която се извършва чрез GetProperties .

Така че public readonly Sku Sku; не се показва чрез classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) защото може да бъде достъпен само като поле за член.

Можете да го промените на public Sku Sku { get; } така че се хидратира чрез конструктор чрез GetProperties и променете всички полета само за четене (Sku - VendorId, Value &VendorId - Value полета), за да има метод за получаване на свойства.

Освен това трябва да добавите cm.MapProperty(c => c.Identity) така че x=>x.Identity.Equals(entity.Identity) може да се сериализира, когато се използва като израз, защото Identity не може да се хидратира и регистрира чрез ImmutablePocoConvention тъй като не е аргумент на конструктор, когато се изпълнява логиката на автоматичното съпоставяне.

Промени в кода:

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. Как да стартирате db.killOp() с помощта на собствения драйвер на MongoDB Node.js?

  2. Как да се свържа с външен екземпляр на MongoDB в Meteor?

  3. MongoDB:търсене на тръбопровод с бавна производителност в сравнение с основното търсене

  4. Има ли значение редът в bson_iter_find в mongo c драйвер

  5. yum инсталирането на mongodb 3.2 е неуспешно