2012-10-02 88 views
0

我試圖導入一些遺留投票數據到我們的sitecore解決方案。對於部分導入,我試圖創建新的sitecore項目來保存基於我們已經爲民意調查設置的母版頁數據。這個大師有幾個默認項目設置在它下面,我想刪除一些特定的默認項目,然後我添加舊輪詢數據。然而,當我嘗試刪除使用item.DeleteChildren()的默認項目之一,我得到Sitecore.Tasks.ItemEventHandler.OnItemDeleted(Object sender, EventArgs args)在sitecore內核拋出NullReferenceException。如果有人有任何想法可能導致這種情況,我會很感激。我們正在使用sitecore 5.3.2版本。NullReferenceException當刪除sitecore項目兒童

這裏是我使用的代碼嘗試創建/編輯基於主人的項目。創建完美的作品,它的DeleteChildren()調用不起作用。

Guid LegacyPollFolderGuid = new Guid("8AE89A44-9DCD-4AC2-B0F3-DD438188A575"); 
    Guid QuizOMaticMasterGuid = new Guid("74B95ABF-1898-4870-8B4F-50AF0078AE22"); 

    var master = Sitecore.Configuration.Factory.GetDatabase("master"); 
    var root = master.GetItem(new Sitecore.Data.ID(LegacyPollFolderGuid)); 
    var quizMasterTemplate = master.Masters[new Sitecore.Data.ID(QuizOMaticMasterGuid)]; 

    var quizPage = root.Add("Test Quiz", quizMasterTemplate); 
    if (quizPage != null) 
    { 
     var quiz = quizPage.Children["Column One"].Children["QuizOMatic"]; 
     if (quiz != null) 
     { 
     var questionFolder = quiz.Children["Questions"]; 
     var questionTemplate = questionFolder.Children[0].Template; 
     var resultsFolder = quiz.Children["Results"]; 
     var linksFolder = quiz.Children["Links"]; 

     using (new Sitecore.SecurityModel.SecurityDisabler()) 
     { 
      questionFolder.DeleteChildren(); 
     } 
     } 
+0

你需要問題文件夾嗎?你有沒有試過直接刪除它。它會自動刪除孩子。 – marto

+0

我還沒有試過刪除問題文件夾,因爲我需要它。我試着枚舉問題文件夾的子項,並直接調用item.Delete(),直接得到相同的結果。 –

+0

它聽起來像一個sitecore錯誤。我想知道是不是因爲你剛剛創建了這個項目而直接刪除了。只是爲了證明它不是一個時間問題,你可以在調用delete之前退出Thread.Sleep(2000)並查看它是否仍然會出錯 – marto

回答

0

我已經構建了一個具有相同功能的工具;刪除特定文件夾下的所有項目。我得到了同樣的錯誤,但我看到項目被刪除。所以我多次重新使用該工具,並最終刪除了所有項目。