Spero che qualcuno possa aiutare. Sto prendendo confidenza con il driver C# per MongoDB e come gestisce la serializzazione. Considerare le seguenti classi di esempio:Come ottenere un riferimento all'oggetto padre in un documento MongoDB deserializzato?
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();
}
}
Si noti che SubThing ha una proprietà che fa riferimento al padre. Così, quando la creazione di oggetti lo faccio in questo modo:
Thing T = new Thing();
T.ThingName = "My thing";
SubThing ST = new SubThing();
ST.SubThingName = "My Subthing";
T.ST = ST;
ST.ParentThing = T;
La proprietà ParentThing è impostato su BsonIgnore perché altrimenti causerebbe un riferimento circolare quando serializzazione a MongoDB.
Quando non serializzare MongoDB si crea il documento esattamente come mi aspettavo che fosse:
{
"_id" : LUUID("9d78bc5c-2abd-cb47-9478-012f9234e083"),
"ThingName" : "My thing",
"ST" : {
"_id" : LUUID("656f17ce-c066-854d-82fd-0b7249c80ef0"),
"SubThingName" : "My Subthing"
}
qui è il problema: Quando ho deserializzare perdo il riferimento di SubThing al suo genitore. C'è un modo per configurare la deserializzazione in modo che la proprietà ParentThing sia sempre il suo documento principale?
maledetto. 19 secondi !! :-) +1 da me – mnemosyn
Mille grazie. :-) – Pseudo