2015-08-20 47 views
1

我有一個Sitecore.Services.Client API控制器連接到上傳一個媒體項目(CSV)的Sitecore SPEAK應用程序,然後解析CSV並導入數據。Sitecore GetChildren在創建子項後立即變空

完成此導入後,我在Sitecore中創建一個彙總項目,其中包含創建的項目列表,任何錯誤以及上傳的CSV鏈接。

var parentItem = _itemReader.GetItem(ParentItemId); 
var template = _itemReader.GetTemplateItem(TemplateId); 

var newItem = parentItem.Add(title, template); 

然後我有另一個控制器查看摘要項目文件夾獲取媒體ID是我上傳的項目的子項目。

summaryFolder.Children.Where(x => x["Media file"] == mediaItemId).FirstOrDefault(); 

我看到的問題是,一旦一個控制器已經創建了項目,接下來控制器調用Item.Children但沒有孩子被發現。如果我稍後再次請求控制器,則會發現它們。它看起來像項目緩存潛在或類似的東西沒有及時更新。

無論如何要求一個項目繞過任何緩存並直接進入數據庫。或者有無論如何,當我創建項目強制緩存更新?

的完整代碼

public ImportAudit GetLatestAudit(string mediaItemId) 
{ 
     var importAudit = new ImportAudit(); 

     var summaryFolder = masterDatabase.GetItem(new ID(AuditFolderId)); 

     if (summaryFolder != null) 
     { 
      var lastestAudit = summaryFolder.GetChildren().Where(x => x["Media file"] == mediaItemId).OrderByDescending(x => x.Statistics.Created).FirstOrDefault(); 

      if (lastestAudit != null) 
      { 
       importAudit.ImportedItems = GetTitles(lastestAudit, "Imported Items"); 
      } 
     } 

     return importAudit; 
    } 
+0

您是否在第二個控制器中使用'.GetChildren()'或'.Children'? –

+0

孩子。對不起,我會更新那個錯誤 – Komainu85

+1

嘗試'.GetChildren()'。我不確定這是否會有所幫助,但是如果Sitecore緩存中已存在項目並且'.Children'已被調用一次,那麼在添加另一個子項後,子項列表可能已經填充並且不會刷新。 '.GetChildren()'應該對項目提供者執行調用。 –

回答

0

這種固定由馬克·卡西迪的建議,這是由於的JavaScript調用順序首先擊中了錯誤的控制器。

相關問題