核心價值表我想在我沿着使用稍微修改sqlProvider的的的使用ServiceStack OrmLite創建動態類型
public class KeyValue {
public string Id { get; set; }
public dynamic Value {get; set; }
}
線我沒有問題得到CreateTable<KeyValue>()
產生varchar(1024) Id
數據庫中創建一個關鍵值表,varchar(max) Value
。
我沒有問題對象保存到它。問題是當我加載對象
var content = dbConn.GetById<KeyValue>("about");
content.Value
在這一點上是一個字符串。
望着數據庫中記錄值的文本不會出現存儲任何類型的信息。
難道真有什麼我可以做的比手動調用,並呼籲反序列化使用合適的類型信息的更好其他?
我並不需要絕對的動態,我的實際使用情況是多態性與基類的,而不是動態的。所以,我真的不關心什麼類型的價值是,它是否是基類,動態對象等。不管比使用類
public class KeyValue {
public string Id { get; set; }
public MySpecificChildType Value {get; set; }
}
我一直沒能不是字符串得到其他任何東西等價值。我可以告訴OrmLite序列化類型信息以便能夠正確地反序列化我的對象,還是隻需手動執行?
編輯:一些進一步的信息。 OrmLite正在使用由ServiceStack.Text.TypeSerializer
定義的Jsv序列化程序,並且不能在BSD版本中插入。如果我添加一個類型屬性,以我的動態值的鍵值類我可以做
var value = content.Value as string;
MySpecificChildType strongType =
TypeSerializer.DeserializeFromString(content, content.Type);
我真的想要一個更好的方式來做到這一點,我真的不喜歡1種類型的對象進入該數據庫以不同的類型(字符串)返回。