sql >> Database >  >> NoSQL >> MongoDB

MongoDB Composite Key:InvalidOperationException:{document}.Identiteit wordt niet ondersteund

Ik keek naar de hydratatie via constructorpost die wordt gedaan via GetProperties .

Dus public readonly Sku Sku; verschijnt niet via classMap.ClassType.GetTypeInfo().GetProperties(_bindingFlags) omdat het alleen toegankelijk is als ledenveld.

Je kunt het veranderen in public Sku Sku { get; } dus het wordt gehydrateerd door de constructor via GetProperties en wijzig alle alleen-lezen velden (Sku - VendorId, Value &VendorId - Value velden) om een ​​eigenschap getter methode te hebben.

U moet ook cm.MapProperty(c => c.Identity) toevoegen dus x=>x.Identity.Equals(entity.Identity) kan worden geserialiseerd wanneer gebruikt als uitdrukking omdat Identity kan niet worden gehydrateerd en geregistreerd via ImmutablePocoConvention omdat het geen constructorarg is wanneer automap-logica wordt uitgevoerd.

Codewijzigingen:

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. hoe 0 voor week te tonen wanneer geen record overeenkomt met die week in $week mongodb-query

  2. HTML ophalen van MongoDB voor gebruik in Template

  3. Meteor met behulp van Azure MongoDB

  4. Hoe te controleren of een arrayveld deel uitmaakt van een andere array in MongoDB?