ExecuteEntityQuery メソッドを使用して、コンポーネント (メタデータを含む) のリストを取得しようとしています。
残念ながら、CustomMeta プロパティには値が入力されないため、リスト内のすべての項目を反復処理して、それぞれの項目の CustomMeta を取得しています - 重大なパフォーマンスの問題です。
リスト内のすべてのアイテムのデータベースにアクセスせずに、コンポーネントのリストの CustomMeta を取得する方法はありますか?
前もって感謝します。
ExecuteEntityQuery メソッドを使用して、コンポーネント (メタデータを含む) のリストを取得しようとしています。
残念ながら、CustomMeta プロパティには値が入力されないため、リスト内のすべての項目を反復処理して、それぞれの項目の CustomMeta を取得しています - 重大なパフォーマンスの問題です。
リスト内のすべてのアイテムのデータベースにアクセスせずに、コンポーネントのリストの CustomMeta を取得する方法はありますか?
前もって感謝します。
私の推測では、効率のためにカスタム メタが自動的に設定されることはありません。別の方法は、コンテンツ配信 Web サービス (OData) を使用することです。これにより、1 つのクエリで一連の項目のすべての CustomMeta を取得できます。
特定のパブリケーションのカスタム メタデータを含むすべてのコンポーネントを提供する簡単な例:
http://mysite/odata.svc/Publications(30)/Components?$expand=CustomMeta
ドキュメントのこのページにあるようにExecuteEntityQuery
:
クエリに一致するオブジェクトの配列を返します。
executeQuery
アイテムのプロパティに直接アクセスする必要がある場合に使用します。
データベースのヒット数を減らすには、Tridion のオブジェクト キャッシュの使用も検討してください。驚くほど大量のメタデータを通常のサイズのキャッシュに収めることができます。