Ich habe Probleme beim Versuch, ein Objekt mit einer dynamischen Eigenschaft in RavenDB zu speichernWie speichern Sie C# -Objekte mit dynamischen Eigenschaften in RavenDB?
Das Objekt, das ich versuche zu speichern, ist eine Bestellung. Der Auftrag enthält eine Liste von Auftragszeilen so die folgende Order-Klasse vorstellen:
public class Order {
public int Id { get; set; }
public List<Orderline> Orderlines { get; set; }
}
Und die Orderline Klasse Wesen:
public class Orderline {
public Product Product { get; set; }
public int Quantity { get; set; }
public dynamic Attributes { get; set; }
}
Das Objekt Ich versuche zu retten (ich es mit JSON angezeigt werden);
{
"Id": 0,
"Orderlines": [
{
"Product": {
"Id": 0,
"Name": "Some product"
},
"Quantity": 1,
"Attributes": {
"color": "Red"
}
}
]
}
Speichern es keine Fehler werfen
RavenDB speichert das Order-Objekt als
{
"Id": 0,
"Orderlines": [
{
"Product": {
"Id": 0,
"Name": "Some product"
},
"Quantity": 1,
"Attributes": {
"$type": "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json",
"color": {
"$type": "Newtonsoft.Json.Linq.JValue, Newtonsoft.Json",
"$values": []
}
}
}
]
}
Beachten Sie, dass die Werte Eigenschaft Order.Orderlines[0].Attributes.color
nicht gesetzt ...
Wenn ich versuche, Serialisierung des Objekts zurück zu meinem C# Order-Objekt Ich erhalte die folgende Ausnahme;
Kann Objekt des Typs gegossen 'Raven.Imports.Newtonsoft.Json.Utilities.CollectionWrapper`1 [Newtonsoft.Json.Linq.JToken]' eingeben 'Newtonsoft.Json.Linq.JValue'.
Was mache ich falsch, wie kann ich dieses Objekt in der RavenDB-Datenbank speichern und abrufen?
http://StackOverflow.com/Questions/24208510/ravendb-dynamic-Objects kann relevant sein – stuartd
Warum brauchen Sie die Dynamik? Ist die Lösung, verwenden Sie keine Dynamik – Liam
@ Liam Die Sache ist, ich versuche, ein generisches Orderline-Objekt zu haben, das noch benutzerdefinierte Eigenschaften enthalten kann. Dies ist relevant, da ich in Zukunft gerne mehrere Produkte verwenden möchte, die dieselbe API verwenden, die die anwendungsspezifischen benutzerdefinierten Attribute in der Eigenschaft Attributes (in diesem Fall Farbe) speichern kann. – Bryandh