我可以在SitecoreQuery属性中使用相对快速查询吗?

Ste*_*ill 5 c# sitecore sitecore7 glass-mapper

我正在安装Sitecore 7 + Glass Mapper 3,我希望对其进行优化.

我的代码的一个例子是:

[SitecoreQuery(".//*[@@templateid = '{011EC776-D9F3-4D73-8D8D-E454417E7574}']", 
                                                               IsRelative = true)]
IEnumerable<ItineraryLine> Itinerary { get; set; }
Run Code Online (Sandbox Code Playgroud)

我希望使用FastQuery,但我得到错误:

期望在第4位的字符串结束

尝试以下解决方案,这涉及到getLookupSourceItems管道的插入- 但我不认为这是正确的管道,因为它不会在调试中触发.

Glass是否在此场景中使用了另一个管道(如果有的话)?有没有不同的方法可以解决我加快速度的目标?

如果我没有使用属性而是使用扩展方法,我可以手动执行此操作并使用*[@@id='']设置根节点,但我希望尽可能避免这种情况.

Mic*_*rds 7

当使用IsRelative设置为true时,GMS会通过Axes SelectItem推送查询.Sitecore不允许快速查询Axes选择,例如:

Item.Axes.SelectItems("fast:./*");
Run Code Online (Sandbox Code Playgroud)

请参阅第3页的文档:

http://www.iosh.co.uk/~/media/using%20sitecore%20fast%20query001.ashx

然而,GMS非常棒,这使我们能够以另一种方式解决这个问题,您可以在GMS将扩展的查询中放置占位符.删除IsRelative属性并使用{path}占位符可以得到相同的结果:

[SitecoreQuery("fast:{path}//*[@@templateid = '{011EC776-D9F3-4D73-8D8D-E454417E7574}']")]
IEnumerable<ItineraryLine> Itinerary { get; set; }
Run Code Online (Sandbox Code Playgroud)

路径占位符将扩展到正在映射的当前项的完整路径.

  • 我遇到了同样的问题,发现我可以使用{escapedPath}代替{path} (2认同)