5

最適化しようとしている Sitecore 7 + Glass Mapper 3 の動作中のインストールがあります。

私のコードの例は次のとおりです。

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

FastQuery を使用したいと思っていましたが、エラーが発生しました。

文字列の終わりは位置 4 にあると予想されます

次の解決策を試してみましたが、これにはパイプラインへのスロットインが含まれgetLookupSourceItemsますが、デバッグでトリガーされないため、これは正しいパイプラインではないと思います。

Glass がこのシナリオで使用する別のパイプラインはありますか? これをスピードアップするという私の目標を解決できる別の方法はありますか?

属性ではなく拡張メソッドを使用していた場合は、これを手動で行い*[@@id='']、ルート ノードの設定に使用できますが、可能であればこれを回避したいと考えていました。

4

1 に答える 1

7

IsRelative 設定を true に使用すると、GMS は Axes SelectItem を介してクエリをプッシュします。Sitecore は、Axes 選択の高速クエリを許可しません。例:

Item.Axes.SelectItems("fast:./*");

こちらのドキュメントを参照してください。ページ 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; }

パス プレースホルダーは、マップされている現在のアイテムのフル パスに展開されます。

于 2014-01-25T22:24:04.560 に答える