Sitecore GetChildren 在创建子项后立即为空

Sitecore GetChildren empty just after child item created

我有一个连接到 Sitecore SPEAK 应用程序的 Sitecore.Services.Client API 控制器,该应用程序上传媒体项 (CSV),然后解析 CSV 并导入数据。

导入完成后,我在 Sitecore 中创建一个摘要项目,其中包含创建的项目列表、任何错误、link 到上传的 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;
    }

这是根据 Mark Cassidy 的建议修复的,这是由于 JavaScript 的调用顺序首先击中了错误的控制器。