Sitecore - получить все потерянные элементы С#

Мне нужно получить список всех потерянных элементов в Sitecore. Я не уверен, как это сделать. Моя первоначальная идея состояла в том, чтобы начать с корня и получить всех потомков, а затем проверить каждый элемент, чтобы увидеть, является ли он item.Parent нулевым, но если элемент является сиротой, я не уверен, будет ли он отображаться в списке потомки? Кто-нибудь знает, как найти сирот в Sitecore?


person Erica Stockwell-Alpert    schedule 10.10.2017    source источник


Ответы (1)


Вы не можете получить потерянные элементы с помощью Sitecore Api.

Вам нужно напрямую использовать sql-запрос к базе данных.

В Sitecore уже есть метод CleanupOrphans, который вызывается из задачи Cleanup Database. Он использует следующий запрос для удаления потерянных элементов из базы данных:

string text = " SELECT ID FROM Items i1 WHERE i1.ParentID <> null AND NOT EXISTS(SELECT ID FROM Items i2 WHERE i2.ID = i1.ParentID)";
string sql = " DELETE FROM Items WHERE ID IN (" + text + ")";
person Marek Musielak    schedule 10.10.2017
comment
Спасибо. Это в какой таблице? - person Erica Stockwell-Alpert; 10.10.2017
comment
Я не собираюсь использовать метод CleanupOrphans, мой клиент хочет получить отчет обо всех потерянных элементах, но не обязательно хочет их удалять. - person Erica Stockwell-Alpert; 10.10.2017
comment
Как видно из запроса, это Items таблица. - person Marek Musielak; 10.10.2017