我在嘗試保存在RavenDB中具有動態屬性的對象時遇到問題如何在RavenDB中存儲具有動態屬性的C#對象?
我試圖保存的對象表示一個訂單。該訂單中包含orderlines的列表,以便想象下面的順序等級:
public class Order {
public int Id { get; set; }
public List<Orderline> Orderlines { get; set; }
}
而且OrderLine類之中:
public class Orderline {
public Product Product { get; set; }
public int Quantity { get; set; }
public dynamic Attributes { get; set; }
}
我試圖保存對象(我會用JSON顯示它);
{
"Id": 0,
"Orderlines": [
{
"Product": {
"Id": 0,
"Name": "Some product"
},
"Quantity": 1,
"Attributes": {
"color": "Red"
}
}
]
}
保存它不拋出任何錯誤
RavenDB店訂單對象
{
"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": []
}
}
}
]
}
注意的Order.Orderlines[0].Attributes.color
值屬性未設置...
當我嘗試將對象序列化回我的C#Order對象我得到以下異常;
無法轉換 類型的對象 'Raven.Imports.Newtonsoft.Json.Utilities.CollectionWrapper`1 [Newtonsoft.Json.Linq.JToken]' 爲類型 'Newtonsoft.Json.Linq.JValue'。
我在做什麼錯,我該如何將這個對象存儲在RavenDB數據庫中並檢索它?
http://stackoverflow.com/questions/24208510/ravendb-dynamic-objects可能是相關的 – stuartd
爲什麼你需要動態?是解決方案,不要使用動態 – Liam
@Liam事情是,我想要一個通用的Orderline對象,仍然可以包含自定義屬性。這是相關的,因爲在未來,我希望有多個產品使用相同的API,可以將特定於應用程序的自定義屬性存儲在Attributes屬性中(在本例中爲顏色) – Bryandh