我们有一个分层数据存储(当前在SQLite中),其中每个项目都有一个Flag属性(get / set)和一个ChildHasFlagSet属性(只获取,但是缓存。)这样,当在UI中显示层次结构时,用户可以快速深入查找已标记的项目。
为了澄清,当设置了一个项目的标志时,它会在内部运行父项,并确保每个项目的ChildHasFlagSet都设置为true。但是,如果清除了项目的标志,它会查询每个级别以查找其标志设置的任何其他子级。这样,ChildHasFlagSet被有效地存储,因此检索很快,并且不需要解析子层次结构。
我正在努力的是谁拥有ChildHasFlagSet属性的所有权:它应该是模型/应用程序还是数据存储(当前是SQLite)。
如果它在模型中,那意味着如果要在层次结构中检索远处的子项,则必须加载其所有祖先并设置它们。这意味着您需要维护某种查找以确保只有一个项目实例。
另一方面,如果我们通过触发器在数据库中实现此逻辑,那么内存中的对象可能与数据库不同步。当然你可以刷新它们,但如果你必须刷新它们,你必须得到它们,所以你要回到模型管理方法。
有关处理此问题的不同方法的任何想法?
中号