将原始json保存为raven DB的嵌套属性

时间:2013-12-07 14:39:32

标签: c# .net ravendb

我需要保存为嵌套属性(这是一个子文档列表)的json结构不断变化,我不想维护类结构。

所以我想要一个像

这样的课程
 public class Doc
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string DocName { get; set; }
        public List<String> NestedProperty { get; set; }

    }

我希望raven DB理解json并将其作为json包含在已保存的doc中,而不是将其作为字符串转义。

有没有办法用RavenJArray或RavenJObject或其他方法做到这一点?

这是有效的

public class Doc
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string DocName { get; set; }
        public List<dynamic> NestedProperty { get; set; }

    }

感谢@Wyatt Barnett

1 个答案:

答案 0 :(得分:0)

如果您不想在乌鸦方面做任何事情 - 例如索引NestedProperty - 那么在客户端上反序列化的字符串确实不是一个糟糕的选择。 Raven会逃脱它,因为它在json中存储东西,所以它需要逃避它,但是当你请求它时它会作为一个很好的json字符串出来。

如果我将这些子文档保存在乌鸦中,我可能会在我的文档中保留一份ID列表,然后使用结果转换器将文档作为动态提取出来。我猜你知道这些东西应该是什么类型,这样你就可以从那里进一步改造。

我在一个项目中也取得了一些成功,将多态列表存储为投影子对象,但在某些地方有些循环,我不确定这个技巧是否适用于当前版本的ravendb。

如果你真的想让乌鸦看到它多一点你可以将它存储为动态,但你仍然会遇到一些挑战 - 它会很好但你怎么会知道动态的属性对象除非你以某种方式跟踪,然后那不是那么有活力吗?