2012-10-02 6 views
0

일부 기존 폴링 데이터를 Google의 sitecore 솔루션으로 가져 오려고합니다. 가져 오기의 일부로, 우리는 이미 설문 조사를 위해 설정 한 마스터 페이지를 기반으로 데이터를 보관하기 위해 새로운 sitecore 항목을 만들려고합니다. 이 마스터에는 기본 항목 몇 개가 설정되어 있으며 레거시 폴링 데이터를 추가하기 전에 몇 가지 특정 기본 항목을 삭제하려고합니다. 그러나 item.DeleteChildren()을 사용하여 기본 항목 중 하나를 삭제하려고하면 NullReferenceException이 사이트 코어 커널에서 Sitecore.Tasks.ItemEventHandler.OnItemDeleted(Object sender, EventArgs args)에 의해 처리됩니다. 누군가가이 문제의 원인이 될 수있는 아이디어가 있다면 고맙겠습니다. 우리는 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 버그와 같습니다. 나는 당신이 지금 막 항목을 창조하고 삭제가 즉시 있기 때문에 그것이인지 생각해 본다. 그냥 타이밍 문제가 아니라는 것을 증명하기 위해 Thread.Sleep (2000)을 호출하기 직전에 삭제를 호출하고 여전히 오류가 있는지 확인할 수 있습니다. – marto

답변

0

동일한 기능을 가진 도구를 만들었습니다. 특정 폴더 아래의 모든 항목을 제거합니다. 같은 오류가 발생했지만 항목이 삭제 된 것을 보았습니다. 그래서 나는 여러 번 도구를 reran 결국 모든 항목이 삭제되었습니다.

관련 문제