RavenDb Patching Api是否适用于递归对象?

时间:2013-01-07 20:20:09

标签: ravendb

这是我的目标:

public class CMSContentItemFolder
{
    int Id {get; set; }
    public Guid InstanceId { get; set; }
    public List<CMSContentItemFolder> ContentItemFolders { get; set; }
    public List<CMSContentItem> ContentItems { get; set; }
}

因此,文件夹可以包含无限级别的子文件夹,就像c驱动器上的系统文件夹一样。

为了让我在一个文件夹和它的子节点上执行CRUD,我必须编写递归方法,这有效但有点痛苦。我知道Patching API会更好,但我还没有看到它适用于递归对象的例子。

在RavenDb中执行此操作的最佳方式是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该使用封装 引用进行建模, 不是 。在您的对象中,嵌套CMSContentItemFolder上的Id的目的是什么?你应该参考一下。同样适用于内容项目。它们可能都在他们自己的文件中。

public List<int> ContentItemFolderIds { get; set; }
public List<int> ContentItemIds { get; set; }

然后在修补时没有任何递归来抗争。