Mam nadzieję, że ktoś może pomóc. Zajmuję się sterownikiem C# dla MongoDB i tym, jak radzi sobie z serializacją. Rozważmy następujący przykład klas:Jak uzyskać odniesienie do obiektu nadrzędnego w zserializowanym dokumencie MongoDB?
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();
}
}
Należy zauważyć, że SubThing ma właściwość, która odwołuje się do rodzica. Więc podczas tworzenia obiektów zrobić tak jak poniżej:
Thing T = new Thing();
T.ThingName = "My thing";
SubThing ST = new SubThing();
ST.SubThingName = "My Subthing";
T.ST = ST;
ST.ParentThing = T;
Obiekt ParentThing jest ustawiony na BsonIgnore bo inaczej byłoby to spowodować odwołanie cykliczne podczas SZEREGOWANIE do MongoDB.
Kiedy ja serializacji do MongoDB tworzy dokument dokładnie jak ja oczekiwać, że będzie:
{
"_id" : LUUID("9d78bc5c-2abd-cb47-9478-012f9234e083"),
"ThingName" : "My thing",
"ST" : {
"_id" : LUUID("656f17ce-c066-854d-82fd-0b7249c80ef0"),
"SubThingName" : "My Subthing"
}
Oto problem: Kiedy deserializowania stracę odniesienie SubThing do jego rodzica. Czy istnieje sposób konfigurowania deserializacji, tak aby właściwość ParentThing była zawsze jej nadrzędnym dokumentem?
darn. 19 sekund !! :-) +1 ode mnie – mnemosyn
Wielkie dzięki. :-) – Pseudo