2009-03-13 11 views
1

Ich habe die folgende Struktur in meiner Sitecores MedienbibliothekLöschen geordneten Elemente rekursiv in Sitecore CMS.NET

images/Abteilung/Unterabteilung/product/

Und ich möchte alle löschen der Bilder im Code eine Abteilung zu einer Zeit. Im Moment habe ich

Item[] items = database.SelectItems("/sitecore/media library/images/department1//*");    

Sitecore.Data.Engines.DataEngine engine = new Sitecore.Data.Engines.DataEngine(database); 

using (new SecurityDisabler()) 
{ 
    foreach (Item item in items) 
    { 
     engine.DeleteItem(item)) 
    } 
} 

Das Problem ist, löscht es nur die Kind-Bilder von department1 und nichts darunter?

Antwort

7

DataEngine ist eine sehr Low-Level-API, die nicht ohne Grund verwendet werden sollte.

alle Unterpunkte gleichzeitig löschen ist einfach:

Artikel department1 = database.GetItem ("/ sitecore/Medienbibliothek/images/department1"); department1.DeleteChildren();

Dies wird department1 Element verlassen, aber alles darunter wird gelöscht.

+0

Vielen Dank für Ihre Antwort, für welchen Grund würden Sie die DataEngine verwenden? –

+1

Schnelle Antwort ist nie, es sei denn, Sie wissen, was Sie tun. Längere Antwort ist, dass manchmal Menschen eine hardcore Anpassung oder eine Problemumgehung benötigen, die nicht mit öffentlichen APIs höherer Ebene erreicht werden kann. Aber selbst dann wird es wahrscheinlich von Sitecore-Support-Sachen gemacht, dies dokumentieren wir nicht. –

+2

Kann ich auch vorschlagen, die Sitecore Rocks-Erweiterung für Visual Studio zu verwenden. Sie können Ihren Inhaltsbaum direkt in VS anzeigen und einen "Commandy" ausführen, indem Sie mit der rechten Maustaste auf eine beliebige Stelle im Inhaltsbaum klicken und einen Abfrageanalysator auswählen. Eine für diesen Fall verwendete wäre: löschen von/sitecore/Medienbibliothek/images/department1/* Sie können auch Artikelattribute verwenden, wie [@@ templateid = ""], etc. Viel Glück . –

Verwandte Themen