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

Element 'id' neodpovídá žádnému poli nebo vlastnosti chyby s vnořenými třídami

Stručně řečeno:je to všechno o konvencích. Ovladač MongoDB .NET zpřístupňuje statickou třídu ConventionRegistry což vám umožní zaregistrovat si vlastní konvence (více zde ). Navíc existují dvě „vestavěné“ konvence __defaults__ a __attributes__ . Kopání hlouběji (ovladač

Což znamená, že id členové budou považováni za běžné prvky BSON _id.

Jak to opravit?

Můžete se zbavit výchozích konvencí

ConventionRegistry.Remove("__defaults__");

Automaticky však zahodíte všechny ostatní konvence ovladače, což je dost riskantní. Alternativně můžete vytvořit falešnou vlastnost, která bude vždy prázdná:

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

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

nebo můžete jednoduše použít BsonNoId atribut který

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

Takže konvence bude nastavení vašeho id jako IdMember v mapě třídy, ale pak během následného zpracování tento atribut vynutí IdMember, aby byl nulový a vaše třída bude úspěšně deserializována



  1. Jak zkontrolovat, zda je index skrytý v MongoDB

  2. 5 způsobů, jak získat měsíc z data v MongoDB

  3. Nedaří se připojit ke vzdálenému serveru mongodb

  4. Jak třídit a omezovat výsledky v mongodb?