Orchardcms BuildShapes是否进行数据库调用?

Orchardcms BuildShapes是否进行数据库调用?,orchardcms,orchardcms-1.8,Orchardcms,Orchardcms 1.8,我正在尝试为一系列查询生成自定义标记。一个查询根据“Spotlight”内容类型进行过滤,并且具有指向Spotlight.cshtml的形状布局 Spotlight.cshtml @{ dynamic shapes = Model.BuildShapes; } @foreach (dynamic shape in shapes()) { @Display(shape) } 我使用的是BuildShapes而不是BuildDisplay,因为后者会调用数据库。BuildS

我正在尝试为一系列查询生成自定义标记。一个查询根据“Spotlight”内容类型进行过滤,并且具有指向Spotlight.cshtml的形状布局

Spotlight.cshtml

@{
    dynamic shapes = Model.BuildShapes;
}    
@foreach (dynamic shape in shapes())
{
    @Display(shape)
}

我使用的是
BuildShapes
而不是
BuildDisplay
,因为后者会调用数据库。
BuildShapes
是否也调用DB?

从查看
ShapeLayout.cs
可以看出,BuildShapes正在调用BuildDisplay,它正在调用驱动程序向他们请求形状。因此,如果驱动程序正在进行数据库调用,BuildShapes也是如此


更重要的问题是你到底想做什么?缺少很多上下文。

嗯,我不知道还能告诉你什么。我有一个查询的形状布局。我试图在不进行太多数据库调用的情况下渲染它。请看这里的代码:它的功能很好。我关心的是性能。如果您要显示查询结果,那么要查找的是select n+1问题,您通常通过一次先发制人地查询相关记录而不是逐项查询,或者通过添加联接(通常通过从代码中添加查询提示)来解决这些问题。调查此类问题的最佳工具是mini profiler模块,再加上对生成有问题sql查询的代码的可靠分析。投影模块也有一些设施,例如“急切获取”过滤器,可以提供很大帮助。