所以我有一个层次结构,我有一个递归函数来构建子元素。在每个级别,最好是Parent.Children
(延迟加载)或Context.Whatever.Where(x => x.ParentId == currentItemId)
如果有更好的加载层次结构的方法,我也在寻找其他建议。将所有项目放在一个查询中,然后在内存中构建层次结构会更好吗?
可能会有所帮助的更多细节: 这只是用来构建一棵树。所以每个"级别"真的需要一个id和头衔。我只有一个简单的树(每个项目都有一个ParentId)
答案 0 :(得分:2)
如果你依赖儿童数据,那就急切加载它。如果仅在满足某些条件时才使用子数据,那么我会让它懒惰地加载孩子。
答案 1 :(得分:2)
从RDBMS读取层次结构有多种注意事项:
ID
可用。在这种情况下,一个常见的技巧是制作一个"层次结构ID"从根父级的ID
开始,并将其作为字段添加到所有后代。此字段允许您一次检索整个层次结构,然后修复内存中的引用。要做出决定,您应该构建一个小型原型,在其数据表中填充足够的行以进行分析以使其有意义,并以两种方式对查询进行分析。请注意,在几乎空的数据库上对查询进行概要分析是没有用的,因为时间将由往返行程控制。