RavenDb补丁Api是否适用于递归对象?
这是我的目标:RavenDb补丁Api是否适用于递归对象?,ravendb,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; }
public class CMSContentItemFolder
{
int Id {get; set; }
public Guid InstanceId { get; set; }
public List<CMSContentItemFolder> ContentItemFolders { get; set; }
public List<CMSContentItem> ContentItems { get; set; }
}
公共类CMS内容文件夹
{
int Id{get;set;}
公共Guid实例ID{get;set;}
公共列表ContentItemFolders{get;set;}
公共列表ContentItems{get;set;}
}
因此,文件夹可以有无限级的子文件夹,就像c驱动器上的系统文件夹一样
为了在文件夹及其子文件夹上执行CRUD,我必须编写递归方法,这很有效,但有点麻烦。我知道修补API会更好,但我还没有看到它适用于递归对象的示例
在RavenDb做这件事最好的方法是什么
谢谢 您应该使用封装或引用进行建模,而不是两者都使用。在对象中,嵌套的CMSContenteMFolder上的Id的用途是什么?您可能应该改为引用。内容项目也是如此。它们可能都在各自的文档中
public List<int> ContentItemFolderIds { get; set; }
public List<int> ContentItemIds { get; set; }
public List contentItemFolderId{get;set;}
公共列表ContentItemId{get;set;}
那么,在进行修补时,您就不会遇到任何递归问题。谢谢Matt-您的Id是正确的,应该删除它。我正在构建一个CMS,这是一个文件存储库模块。如果我按照您的建议做了,那么如果每个文件和文件夹都有自己的raven文档,那么不会有性能问题吗?文件存储库的每个实例可能有数百甚至数千个文件和文件夹。使用我最初的方法,我可以在一次调用中检索整个文件存储库……就像大多数事情一样,在封装和引用之间需要取得平衡。主要因素是如何加载数据。您是否总是从根节点到所有叶节点获取所有文件和文件夹?如果是,封装。若否,请参阅。Raven可以轻松处理数以百万计的文档,因此这不成问题。要避免打很多单独的电话,请使用