Stručně řečeno:je to všechno o konvencích. Ovladač MongoDB .NET zpřístupňuje statickou třídu
Což znamená, že
Jak to opravit?
Můžete se zbavit výchozích konvencí
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á:
nebo můžete jednoduše použít
Takže konvence bude nastavení vašeho 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č id
členové budou považováni za běžné prvky BSON _id.ConventionRegistry.Remove("__defaults__");
public class SubServiceDef
{
[BsonElement("id")]
public int Id { get; set; }
[BsonId]
public ObjectId FakeId { get; set; }
}
BsonNoId
atribut který[BsonNoId]
public class SubServiceDef
{
[BsonElement("id")]
public int Id { get; set; }
}
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