如何在没有选择N + 1的情况下在Orchard CMS中定义内容项之间的关系

时间:2015-02-19 15:58:59

标签: orchardcms

我们目前在使用Container / Containable结构构建的Orchard内容项之间存在一些父子关系。

父项是制造商,子项是范围,范围的子项是产品。我们有这种亲子关系4层深。

这一切都有效但在我们有不同制造商的产品列表的页面上,并希望显示有关制造商的一些信息,因为选择n + 1问题,每个产品的性能都很糟糕。

这是因为我们在一个查询中引入所有产品,但随后为每个产品执行查询以查找容器ID,然后为每个制造商内容项执行单独的查询。 / p>

我已经添加了查询提示以急切地获取公共部分,但我们仍然有选择n + 1问题来获取实际的父内容项,显然在层次结构中较低级别这个问题被放大了。

我认为这是因为CommonPart上Container的惰性字段 - 我无法通过该结构看到避免这种情况的方法,或者告诉内容管理员急切地获取它。

然后我研究了使用http://docs.orchardproject.net/Documentation/Creating-1-n-and-n-n-relations#BuildingaRelationBetweenContentItems自己定义结构,但是内容类型之间关系的示例再次使用惰性字段加载父级。

我想要的是执行单个查询以获取包含其父范围及其父制造商的每个产品,但我无法看到如何执行此操作。有这方面的例子吗?

1 个答案:

答案 0 :(得分:0)

我不知道这是否会对你有所帮助。我开发了一个模块(Assi.BrotherContentItems)来显示兄弟内容项。我的意思是兄弟,当前项目的同一容器包含的内容项目。发送到视图的模型包含一个名为Parent的ContentItem类型的属性我认为这就是您要查找的内容。