Kentico分层查看器内容过滤器“;无效的列名";例外

Kentico分层查看器内容过滤器“;无效的列名";例外,kentico,Kentico,我有一个页面,它使用分层查看器和内容过滤器,过滤两种页面类型,一种是容器,另一种是叶子页面。容器页面类型没有字段,页面有多个字段。在层次查看器/内容过滤器/列中,我明确列出了一些要返回的列,因为这有助于提高性能 我们正在从Kentico 8.2升级到Kentico 9。在8.2站点中,此页面正在运行。在9站点中,它现在抛出一个异常,称为“无效列名”。如果我删除列列表(默认情况下允许Kentico返回所有列),它将再次工作。性能损失不是很明显,因此这是一个可行的选择。然而,我想知道为什么这在Ken

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

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


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

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


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

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


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

我们只是使用“默认选择所有列”解决方案,因为它是最快的。我会记住你的建议,以防我们遇到性能问题。谢谢如果您需要一些逻辑来充分利用这两个方面,我实际上创建了一个层次结构查看器(我认为是V9),它可以查找所有类,获得可能的列列表,并允许您选择和查询这些列中的任何一列。我们只使用“默认选择所有列”解决方案,因为它是最快的。我会记住你的建议,以防我们遇到性能问题。谢谢如果您需要一些逻辑来充分利用这两个方面,我实际上创建了(我认为是V9)一个层次结构查看器,它可以查找所有类,获得可能列的列表,并允许您选择和查询这些列中的任何一列。