sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Composite Key:InvalidOperationException:{document}. Identitet stöds inte

Jag tittade på hydreringen via konstruktörsinlägget som görs genom GetProperties .

public readonly Sku Sku; visas inte via classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) eftersom det bara kan nås som medlemsfält.

Du kan ändra den till public Sku Sku { get; } så det hydratiseras genom konstruktorn via GetProperties och ändra alla skrivskyddade fält (Sku - VendorId, Value &VendorId - Value fields) för att ha egenskapsgetter-metoden.

Du måste också lägga till cm.MapProperty(c => c.Identity)x=>x.Identity.Equals(entity.Identity) kan serialiseras när det används som uttryck eftersom Identity kan inte hydratiseras och registreras genom ImmutablePocoConvention eftersom det inte är en konstruktor arg när automap logik körs.

Kodändringar:

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. MongoDB:Uppdaterar underdokument

  2. $fitler kapslad array med $lte $gte

  3. Snygg utskrift av output i pymongo

  4. Hur gör man textsökning i mgo?