ExecuteEntityQuery и CustomMeta
Я пытаюсь получить список компонентов (включая метаданные), используя метод ExecuteEntityQuery.
К сожалению, свойство CustomMeta никогда не заполняется, и поэтому у меня есть перебор всех элементов в списке и получение CustomMeta для каждого - серьезная проблема с производительностью.
Есть ли способ, как я могу получить CustomMeta для списка компонентов, не нажимая на БД для каждого элемента в списке?
Заранее спасибо.
2 ответа
Я предполагаю, что пользовательская мета не заполняется автоматически ради эффективности. Альтернативой является использование веб-службы доставки контента (OData). Это позволяет вам получить все CustomMeta диапазона элементов в одном запросе.
Простой пример, который дает вам все компоненты, включая пользовательские метаданные в данной публикации:
http://mysite/odata.svc/Publications(30)/Components?$expand=CustomMeta
Как говорится на этой странице в документации ExecuteEntityQuery
:
Возвращает массив объектов, соответствующих запросу. использование
executeQuery
если вам нужен прямой доступ к свойствам предметов.
Чтобы уменьшить количество обращений к базе данных, также подумайте об использовании кэша объектов Tridion. Вы можете поместить удивительно большое количество метаданных в кэш регулярного размера.