sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Composite Key:InvalidOperationException:{document}.Identitet er ikke understøttet

Jeg kiggede på hydreringen via konstruktørindlæg, som er udført gennem GetProperties .

offentlig skrivebeskyttet Sku Sku; vises ikke gennem classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) fordi det kun kan tilgås som medlemsfelt.

Du kan ændre det til public Sku Sku { get; } så det er hydreret gennem constructor via GetProperties og ændre alle skrivebeskyttede felter (Sku - VendorId, Value &VendorId - Værdi felter) for at have egenskabsgetter-metoden.

Du skal også tilføje cm.MapProperty(c => c.Identity)x=>x.Identity.Equals(entity.Identity) kan serialiseres, når det bruges som udtryk, fordi Identitet kan ikke hydreres og registreres gennem ImmutablePocoConvention da det ikke er et constructor-arg, når automap-logik kører.

Kodeændringer:

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. Omdøb felt af kompleks type, der er placeret i array

  2. Mongo. Forespørg dokumenter med et array, hvis underordnede ALLE skal matche en forespørgsel

  3. Redis Keyspace-meddelelser med flushdb

  4. Mongoose med ReplicaSet på Atlas