Caching Kentico 9-数据缓存宏

Caching Kentico 9-数据缓存宏,caching,macros,kentico,Caching,Macros,Kentico,我正在自定义表上进行字段验证。 这是验证字段上的宏: {% foreach(CMSContext.Current.GlobalObjects.CustomTables[“customtable”].Items.ItemsAsFields.IdNumber中的i) { if(i==IdNumber.Value){ 返回false; } } 返回true; #%}输出和数据缓存都不会应用于宏(您可以选择手动,但默认情况下是关闭的) 还有一个用户看不到的额外缓存级别—API级哈希表。Kentico

我正在自定义表上进行字段验证。 这是验证字段上的宏:

{%
foreach(CMSContext.Current.GlobalObjects.CustomTables[“customtable”].Items.ItemsAsFields.IdNumber中的i)
{
if(i==IdNumber.Value){
返回false;
} 
}
返回true;

#%}
输出和数据缓存都不会应用于宏(您可以选择手动,但默认情况下是关闭的)

还有一个用户看不到的额外缓存级别—API级哈希表。Kentico负责在通过API更改对象时自动更新表。因此,基本上有两种可能出错的选择: -要么是哈希表中有一个bug -或者您不是通过API更新自定义表,而是通过直接SQL查询更新自定义表,并且系统不知道对数据库所做的更改

问题是:您使用的是SQL查询吗


如果是,则必须通过调用手动刷新缓存。

我认为这就是问题的原因(9.0.46):

自定义表-自定义表项集合错误地缓存在宏中
在宏中使用自定义表对象的Items属性时,数据缓存不正确。例如,当使用“GlobalObjects.CustomTables[“”].Items”宏时,不会返回最新数据。

可能是,可能是……我正在搜索那个bug,但找不到它……我想我的搜索短语中有一个输入错误:)让我先试试这个修补程序。谢谢鲍里斯·汉克斯·洛基。它使用CMS机制来保存数据,这就是我能想到的,似乎没有使用SQL查询。如果我想手动使用ClearHashTables,有没有什么例子可以将它应用到宏中?你必须这样做。不管怎么说,因为您使用的是Kentico的API,所以它看起来像一个bug,很可能已经被9.0.46修补程序修复了。
Custom tables - Custom table Items collection incorrectly cached in macros
When using the Items property of custom table objects in macros, the data was incorrectly cached. For example, when using the 'GlobalObjects.CustomTables["<customtablecodename>"].Items' macro, the latest data was not returned.