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;
}
您是否在第二個控制器中使用'.GetChildren()'或'.Children'? –
孩子。對不起,我會更新那個錯誤 – Komainu85
嘗試'.GetChildren()'。我不確定這是否會有所幫助,但是如果Sitecore緩存中已存在項目並且'.Children'已被調用一次,那麼在添加另一個子項後,子項列表可能已經填充並且不會刷新。 '.GetChildren()'應該對項目提供者執行調用。 –