sql >> Database >  >> NoSQL >> MongoDB

Element 'id' komt niet overeen met een veld of eigenschap van fout met geneste klassen

Lang verhaal kort:het draait allemaal om conventies. MongoDB .NET-stuurprogramma onthult statische klasse ConventionRegistry waarmee u uw eigen conventies kunt registreren (meer hier ). Daarnaast zijn er twee "ingebouwde" conventies __defaults__ en __attributes__ . Dieper graven (driver

Wat betekent dat id leden worden beschouwd als gewone BSON _id-elementen.

Hoe dit op te lossen?

U kunt de standaardconventies verwijderen

ConventionRegistry.Remove("__defaults__");

U laat echter automatisch alle andere driverconventies vallen, wat behoorlijk riskant is. Als alternatief kunt u een nep-eigenschap maken die altijd leeg zal zijn:

public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }

    [BsonId]
    public ObjectId FakeId { get; set; }
}

of je kunt gewoon BsonNoId . gebruiken attribuut dat

[BsonNoId]
public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }
}

Dus de conventie zal uw id instellen als IdMember in de klassenkaart, maar tijdens de nabewerking dwingt dit attribuut IdMember om null te zijn en wordt je klas met succes gedeserialiseerd



  1. Het MongoDB C#-stuurprogramma gebruiken:verpakt of niet-verpakt?

  2. Redis Client List doel en beschrijving

  3. Hoe $push een veld afhankelijk van een voorwaarde?

  4. MongoDB:Subdocument bijwerken