Kentico 分层查看器内容过滤器 "invalid column name" 异常

Kentico hierarchical viewer content filter "invalid column name" exception

我有一个页面使用分层查看器和内容过滤器,过滤两种页面类型,一种是容器页面,另一种是叶页面。容器页面类型没有字段,页面有几个字段。在分层 Viewer/Content Filter/Columns 中,我明确列出了一些列 return,因为这有助于提高性能。

我们正在从 Kentico 8.2 升级到 Kentico 9。在 8.2 站点中,此页面正在运行。在 9 站点中,它现在抛出一个异常 "Invalid column name"。如果我删除列列表(默认情况下允许 Kentico return 所有列),它会再次工作。性能影响不是很明显,因此这是一个可行的选择。但是,我想知道为什么这在 Kentico 9 中现在不起作用。

似乎当 returning 所有列时,默认情况下,如果某个列在页面类型上不可用,Kentico 会生成 SELECT null as MissingColumnName,但是当明确列出这些列时 return,它生成SELECT MissingColumnName。我不知道这是 Kentico 8.2 和 9 之间的变化,还是在升级过程中发生了某些变化。

在版本 9 之前,Kentico 为每种页面类型创建了特定的视图。这些视图在查询中用于检索页面信息。视图将节点、文档和自定义页面类型信息加入到一个查询中。在 v9 中,这些视图被删除并添加了一个通用视图,它只将节点和文档信息连接在一起,然后动态添加自定义页面类型信息。

所以简短的回答是 API 页面和数据检索方式发生了显着变化,因此这是预期的重大变化。您的解决方案不是最佳解决方案,因为它 returns 所有列。但这将是快速、简单的解决方法。我建议在 Web 部件上添加一些缓存,这将极大地提高性能,这就是我们在 v9 和更新的站点中针对此类情况所做的。