sql >> Databáze >  >> NoSQL >> MongoDB

Složený klíč MongoDB:InvalidOperationException:{document}. Identita není podporována

Díval jsem se na hydrataci prostřednictvím příspěvku konstruktoru, který se provádí pomocí GetProperties .

Takže public readonly Sku Sku; nezobrazuje se prostřednictvím classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) protože k němu lze přistupovat pouze jako pole člena.

Můžete jej změnit na public Sku Sku { get; } takže je hydratován pomocí konstruktoru pomocí GetProperties a změňte všechna pole pouze pro čtení (Sku - VendorId, Value &VendorId - Value polí), abyste měli metodu získávání vlastností.

Také musíte přidat cm.MapProperty(c => c.Identity) takže x=>x.Identity.Equals(entity.Identity) lze serializovat při použití jako výraz, protože Identity nelze hydratovat a registrovat prostřednictvím ImmutablePocoConvention protože to není arg konstruktoru, když běží logika automatického mapování.

Změny kódu:

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. Šablona MeteorJS nezobrazuje data, nezobrazuje se

  2. Jak provést stránkování pomocí dotazů na rozsah v MongoDB?

  3. Velikost dokumentu v MongoDb

  4. Jednoduché plánování údržby Windows napříč vašimi databázovými clustery