【问题标题】:Kentico hierarchical viewer content filter "invalid column name" exceptionKentico 分层查看器内容过滤器“无效列名”异常
【发布时间】:2018-01-11 02:12:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: kentico


    【解决方案1】:

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

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

    【讨论】:

    • 我们只是使用“默认选择所有列”解决方案,因为它是最快的。如果我们遇到性能问题,我会记住您的建议。谢谢!
    • 如果你需要一些逻辑来获得两全其美,我实际上创建了(我认为是 V9)一个层次结构查看器,它对所有类进行查找,得到一个可能的列列表,并允许您可以选择和查询这些列中的任何一个。
    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2011-05-15
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多