Ich hoffe, dass jemand helfen kann. Ich beschäftige mich mit dem C# -Treiber für MongoDB und der Handhabung der Serialisierung. Betrachten Sie die folgenden Beispielklassen:Wie erhalten Sie einen Verweis auf das übergeordnete Objekt in einem deserialisierten MongoDB-Dokument?
class Thing
{
[BsonId]
public Guid Thing_ID { get; set; }
public string ThingName {get; set; }
public SubThing ST { get; set; }
public Thing()
{
Thing_ID = Guid.NewGuid();
}
}
class SubThing
{
[BsonId]
public Guid SubThing_ID { get; set; }
public string SubThingName { get; set; }
[BsonIgnore]
public Thing ParentThing { get; set; }
public SubThing()
{
SubThing_ID = Guid.NewGuid();
}
}
Beachten Sie, dass SubThing über eine Eigenschaft verfügt, die auf seine Eltern verweist. Also beim Erstellen von Objekten ich so wie folgt aus:
Thing T = new Thing();
T.ThingName = "My thing";
SubThing ST = new SubThing();
ST.SubThingName = "My Subthing";
T.ST = ST;
ST.ParentThing = T;
Die ParentThing Eigenschaft wird auf BsonIgnore gesetzt, weil sonst wäre es eine kreisförmige Referenz verursachen, wenn sie auf MongoDB Serialisierung.
Wenn ich MongoDB serialisieren es das Dokument erstellt genau, wie ich es erwarten sein:
{
"_id" : LUUID("9d78bc5c-2abd-cb47-9478-012f9234e083"),
"ThingName" : "My thing",
"ST" : {
"_id" : LUUID("656f17ce-c066-854d-82fd-0b7249c80ef0"),
"SubThingName" : "My Subthing"
}
Hier ist das Problem: Wenn ich deserialisieren ich locker SubThing Verweis auf seine Eltern. Gibt es eine Möglichkeit, Deserialisierung so zu konfigurieren, dass die ParentThing-Eigenschaft immer sein übergeordnetes Dokument ist?
verdammt. 19 Sekunden !! :-) +1 von mir – mnemosyn
Vielen Dank. :-) – Pseudo